Pergunta

Eu gostaria de saber exatamente como o "É" comando funciona em Linux e Unix.

Tanto quanto eu sei, ls garfos e exec ao Unix shell / Linux e em seguida, recebe a saída (da árvore de arquivos atual. Eg./home/ankit/). Eu preciso de uma explicação mais detalhada, como eu não tenho certeza sobre o que acontece depois de chamar garfo.

Alguém poderia explicar a funcionalidade de comando 'ls' em detalhes?

Foi útil?

Solução

ls não garfo. Os garfos de shell e executivos, a fim de executar qualquer comando que não é construído, e um dos comandos que podem ser executados é ls.

ls usos opendir () e readdir () para percorrer todos os arquivos no diretório. Se ele precisa de mais informações sobre um deles chama stat ().

Outras dicas

Para adicionar a resposta, no livro C Programming Language (K & RC) que deram um pequeno exemplo sobre como ir sobre a implementação de ls. Eles explicaram as estruturas de dados e as funções utilizadas muito bem.

Para entender o que ls faz, você poderia dar uma olhada na fonte OpenSolaris: https://hg.java.net/hg/solaris~on-src/file/tip/usr/src/cmd/ls/ls.c .

Se isso é esmagadora, no Solaris você comece usando treliça de olhar para as chamadas de sistema que ls faz para entender o que ele faz. Usando treliça, tente:

treliça -afl -o ls.out / bin / ls

, em seguida, olhar para a saída em ls.out

Eu acredito que traço é o equivalente a treliça em Linux.

Se você realmente quer entender as entranhas detalhadas de ls, olhada no código fonte. Você pode seguir o link do tpgould à fonte Solaris, ou é fácil encontrar a fonte on-line a partir de qualquer distribuição do Linux ou BSD.

Eu particularmente recomendar a fonte BSD 4.4.

Se bem me lembro, ls começa por analisar as suas muitas opções, em seguida, começa com os arquivos ou diretórios listados na linha de comando (o padrão é ""). Subdiretórios são manipulados por recursão na rotina lista de diretórios. Não há fork () ou exec () que eu me lembre.

Esta é uma discussão antiga, mas ainda estou comentando porque eu acredito que a resposta que foi upvoted e aceito está parcialmente incorreta. @ Marcos diz que ls está embutido no shell para shell não exec e garfo. Quando estudei o documento TLDP em bash (Anexei o link) " ls " não está listado como uma compilação no comando.

http://tldp.org/LDP/Bash-Beginners- guia / html / sect_01_03.html

Bash built-in comandos:

apelido, bind, builtin, comando, declare, eco, ativar ajuda, deixe, local, logout, printf, ler, shopt, tipo, typeset, ulimit e unalias.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top