O que significa 'ls --directory'?

16

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

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

Então, estou um pouco confuso sobre como isso funciona. Eu usei o comando ls --directory e eu esperava uma lista com todos os diretórios, mas em vez disso eu tenho .

Então, o que exatamente o ls --directory ou ls -d faz?

    
por Pau Chorro 04.03.2017 / 18:14

5 respostas

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

O diretório atual é representado como . , e é isso que ls -d está listando.

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

Eu uso a opção -d 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 para isso é quando eu quero ver metadados de um diretório usando a opção -l , não seu 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, você pode usar

ls -d */
    
por Zanna 04.03.2017 / 18:20
11

Usar ls apenas com -d é quase inútil. Ele fornece informações sobre o diretório em si. Não lista seu conteúdo.

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

Se você executar simplesmente ls -d , ele mostrará o diretório atual em . .

Se fizer sentido executá-lo com outras chaves, como -l .

ls -ld mostrará as 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 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 -l sem -d , você terá a lista de todas as permissões para arquivos e pastas no diretório atual. Se você não precisa, é um bom exemplo para ls -ld de uso.

Você pode listar diretórios no diretório atual por

ls -d */
    
por Pilot6 04.03.2017 / 18:21
6

Usar ls -d por si só é inútil, porque sem um parâmetro sempre retorna . . Depois de especificar um parâmetro, faz sentido. Por exemplo, se seu nome de usuário for rick e você quiser 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/
    
por WinEunuuchs2Unix 04.03.2017 / 18:40
5

Deixe-me explicar com exemplos:

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

  2. ls -d ou ls --directory : lista os próprios diretórios, não seus conteúdos

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 -d diz para a lista mostra apenas o diretório que eu não estou em seu conteúdo (por exemplo, . em termos do Linux), então o resultado é: . .

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

    
por George Udosen 04.03.2017 / 18:20
4

ls -d lista os diretórios em vez de seu conteúdo. Os arquivos são listados como normais. Veja em man ls a descrição de todas as opções.

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

.. é o diretório pai, o pai para o diretore atual, como em cd .. para mover na hierarquia de diretório

    
por Soren A 04.03.2017 / 18:24