Cosa significa `ls --directory`?


17

Nella mia versione di Ubuntu man ls ha le prossime informazioni su --directory:

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

Quindi sono un po 'confuso su come funziona. Ho usato il comando ls --directorye mi aspettavo un elenco con tutte le directory ma invece ho ottenuto.

Quindi cosa fa ls --directoryo cosa fa esattamente ls -d?

Risposte:


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

La directory corrente è rappresentata come .così è ciò che ls -dè elencato.

Le directory all'interno della directory corrente sono i contenuti della directory e pertanto non vengono visualizzati con questa opzione.

Uso l' -dopzione in un alias per visualizzare file e directory nascosti

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

Senza -d, questo elencherà anche il contenuto delle directory nascoste, che non è quello che voglio.

Un altro uso è quando voglio vedere i metadati di una directory usando l' -lopzione, non il suo contenuto:

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

Se si desidera un elenco di directory nella directory corrente, è possibile utilizzare

ls -d */

ls -dC .* --colorelenca anche i file nascosti non solo le directory.
Pau Chorro

1
si @PauChorro In realtà lo dico nella mia risposta. Lo uso per visualizzare tutti i file e le directory nascosti
Zanna

1
@PauChorro Ho aggiunto un modo per elencare solo le directory
Zanna

1
Nella mia versione di Ubuntu l' man lsha informazioni successivo: list directory entries instead of contents, and do not derefer‐ ence symbolic links. Quindi nella tua versione c'è una spiegazione migliore di ciò che fa davvero.
Pau Chorro

1
@ Pilot6 elencherà anche i file
Zanna

11

L'uso lssolo con -dè quasi inutile. Fornisce informazioni sulla directory stessa. Non elenca i suoi contenuti.

Ecco perché non vedi un elenco di directory. Le directory che ti aspetti di vedere sono i "contenuti" della directory corrente

Se si esegue semplicemente ls -dmostra la directory corrente di ..

Se ha senso eseguirlo con altri tasti come -l.

ls -ld mostrerà le autorizzazioni della directory corrente.

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

Puoi anche vedere le autorizzazioni di qualsiasi altra directory come

ls -ld /bin

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

Se esegui ls -lsenza -d, avrai l'elenco di tutte le autorizzazioni per file e cartelle nella directory corrente. Se non ne hai bisogno, è un buon esempio di ls -ldutilizzo.

Puoi elencare le directory in quella corrente per

ls -d */

6

L'uso ls -dda solo è abbastanza inutile perché senza un parametro restituisce sempre .. Dopo aver specificato un parametro ha comunque senso. Ad esempio se il tuo nome utente è ricke vuoi vedere tutte le directory nel tuo uso domestico:

$ 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/

5

Lasciami spiegare con esempi:

  1. ls: elenca i contenuti di una directory

  2. ls -doppure ls --directory: elenca le directory stesse, non i loro contenuti

Esempi:

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

Il tuo caso di ls -dquesto dice alla lista mi mostra solo la directory sono in non il suo contenuto (ad esempio .in termini di Linux), quindi il risultato è il seguente: ..

Ma se avessi detto ls:, vedrai tutto ciò che è presente nella directory corrente ..


4

ls -delenca le directory stesse invece del loro contenuto. I file sono elencati come normali. Guarda man lsper vedere la descrizione di tutte le opzioni.

. è la directory stessa, la stessa che usi quando esegui un comando dalla directory corrente, ./runscript.sh

..è la directory padre, il padre del directore corrente, come in cd ..per spostarsi al passo con la gerarchia di directory

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.