O que significa `ls --directory`?

16

Na minha versão do Ubuntu, o man ls tem as próximas informações sobre --directory:

list directory entries instead of contents, and do not dereference symbolic links

Então, eu estou um pouco confuso como isso funciona. Eu usei o comando ls --directorye esperava uma lista com todos os diretórios, mas obtive.

Então, o que exatamente faz ls --directoryou ls -dfaz?

Pau Chorro
fonte

Respostas:

24
$ man ls
...
-d, --directory
              list directories themselves, not their contents

O diretório atual é representado como .tal, é o que ls -destá listado.

Os diretórios dentro do diretório atual são o conteúdo do diretório e, portanto, não são mostrados com esta opção.

Eu uso a -dopção em um alias para exibir arquivos e diretórios ocultos

alias l.='ls -dC .* --color'

Sem -d, isso também listará o conteúdo dos diretórios ocultos, o que não é o que eu quero.

Outro uso é quando eu quero ver os metadados de um diretório usando a -lopção, não o conteúdo:

$ ls -ld playground
drwxr-xr-x 72 zanna zanna 12288 Mar  1 23:10 playground

Se você quiser uma lista de diretórios no diretório atual, poderá usar

ls -d */
Zanna
fonte
ls -dC .* --colortambém lista arquivos ocultos e não apenas diretórios.
Pau Chorro
11
@PauChorro Na verdade, digo isso na minha resposta. Eu usá-lo para exibir todos os arquivos e diretórios ocultos
Zanna
11
@PauChorro eu adicionei uma maneira para listar apenas diretórios
Zanna
11
Na minha versão do Ubuntu a man lstem a seguinte informação: list directory entries instead of contents, and do not derefer‐ ence symbolic links. Portanto, na sua versão há uma explicação melhor do que realmente faz.
Pau Chorro
11
@ Pilot6 ele irá listar arquivos também
Zanna
11

Usar lsapenas com -dé quase inútil. Ele fornece informações sobre o próprio diretório. Não lista seu conteúdo.

É por isso que você não vê uma lista de diretórios. Os diretórios que você esperava ver são o "conteúdo" do diretório atual

Se você executar simplesmente, ls -dele mostra o diretório atual por ..

Se faz sentido executá-lo com outras teclas como -l.

ls -ld mostrará permissões do diretório atual.

pilot6@Pilot6:~$ ls -ld
drwxrwxr-x 1 pilot6 pilot6 2570 Mar  4 12:14 .

Você também pode ver as permissões de qualquer outro diretório, como

ls -ld /bin

pilot6@Pilot6:~$ ls -ld /bin
drwxr-xr-x 1 root root 2584 Feb 25 15:19 /bin

Se você executar ls -lsem -d, terá a lista de todas as permissões para arquivos e pastas no diretório atual. Se você não precisar, esse é um bom exemplo de ls -lduso.

Você pode listar os diretórios no atual,

ls -d */
Pilot6
fonte
6

Usar ls -dpor si só é bastante inútil, porque sem um parâmetro ele sempre retorna .. Depois de especificar um parâmetro, isso faz sentido. Por exemplo, se seu nome de usuário é ricke você deseja ver todos os diretórios em seu uso doméstico:

$ ls -d /home/rick/*/
/home/rick/AAC/        /home/rick/EnhanceIO/         /home/rick/silentcast/
/home/rick/assembly/   /home/rick/EnhanceIO-master/  /home/rick/Templates/
/home/rick/bin/        /home/rick/log/               /home/rick/test/
/home/rick/Desktop/    /home/rick/Music/             /home/rick/tmpe/
/home/rick/Documents/  /home/rick/Pictures/          /home/rick/Videos/
/home/rick/Downloads/  /home/rick/Public/
WinEunuuchs2Unix
fonte
5

Deixe-me explicar com exemplos:

  1. ls: lista o conteúdo de um diretório

  2. ls -dou ls --directory: lista os próprios diretórios, não o conteúdo

Exemplos:

ls -d android-sdk-linux/

# result
android-sdk-linux/

ls android-sdk-linux/

# result
add-ons  build-tools  platforms  platform-tools  SDK Readme.txt  temp  tools

Seu caso de ls -deste diz à lista só me mostrar o diretório estou em não seu conteúdo (ou seja, .em termos de Linux), então o resultado é: ..

Mas se você tivesse dito:, lsentão verá tudo o que está presente no diretório atual ..

George Udosen
fonte
4

ls -dlista os diretórios eles mesmos, em vez de seu conteúdo. Os arquivos são listados como normais. Veja man lsa descrição de todas as opções.

. é o diretório em si, o mesmo que você usa ao executar um comando do diretório atual, ./runscript.sh

..é o diretório pai, o pai do cd ..diretório direto atual, como para avançar na hierarquia de diretórios

Soren A
fonte