%3F.png)
Se ls lista o conteúdo do diretório atual, existe um comando semelhante que lista o conteúdo de um diretório não atual, sem usar cd?
Responder1
Depois ls
basta digitar o caminho do diretório que deseja listar e você o obterá. Imagine que você está em seu diretório inicial, mas deseja listar arquivos /etc
. Basta executar ls /etc
e você o listará.
Responder2
ls
fará isso.
A sintaxe para ls
é:
ls flags file-or-directory-names
Pelo que estou ligandofile-or-directory-names
, você pode listar os arquivos no diretório atual para listar apenas alguns arquivos. Por exemplo, ls -l foo bar
listará informações apenas foo
e bar
(em formato longo, conforme forneci o -l
sinalizador). ls baz*go
listará todos os arquivos cujos nomes começam baz
e terminam com go
(se houver).
Mas quando você dá umnome do diretóriopara ls
, ele lista o conteúdo deesse diretórioem vez do diretório atual.
Então, para listar o conteúdo de /var/log
, você simplesmente executaria:
ls /var/log
Se você der umrelativocaminho para o diretório - isto é, um que não comece com -então /
ele procurará esse diretório dentro do diretório atual (assim como procura por arquivos). Mas ainda listará osconteúdodo diretório, como você deseja.
Como observação lateral, às vezes você pode achar que não deseja listar osconteúdode um diretório, mas apenas liste o diretório da mesma forma que um arquivo seria listado. Para fazer isso, você pode passar a -d
bandeira. Por exemplo, isso aparece /var/log
em formato longo (não éconteúdo, mas /var/log
ele mesmo):
ls -ld /var/log
Responder3
Tendo visto a resposta aceita, ainda não fiquei satisfeito. Como Daniel conhecia a solução? Pode apostar que eu mesmo li a página de manual e ainda não consegui descobrir como.
A página de manual de ls
leituras:
Descrição: Lista informações sobre os ARQUIVOS (o diretório atual por padrão)...
Nada de útil aí. Então verifiquei o Manual do Programador POSIX:
Para cada operando que nomeia um arquivo do tipo diretório, ls deve escrever os nomes dos arquivos contidos no diretório, bem como qualquer informação associada solicitada.
Esta linha explica o comportamento do comando na solução aceita. O FILE
operando de ls
CAN será um diretório e ls
listará o conteúdo desse diretório. Exatamente o que o OP queria. MAS a implementação no Linux pode ser diferente da especificação aqui. Portanto, estamos no caminho certo, mas ainda não chegamos lá.
Então procurei o manual do coreutils
pacote GNU, do qual ls
faz parte. Aqui está o que encontrei:
Para argumentos de linha de comando sem opção que são diretórios, por padrão ls lista o conteúdo dos diretórios ...
Isso explica tudo.