Dans ma version Ubuntu, man ls a les informations suivantes sur --directory:
list directory entries instead of contents, and do not dereference symbolic links
Donc, je suis un peu confus comment cela fonctionne. J'ai utilisé la commande ls --directory
et je m'attendais à une liste avec tous les répertoires mais à la place, j'ai eu .
Alors, que font exactement ls --directory
ou ls -d
?
$ man ls
...
-d, --directory
list directories themselves, not their contents
Le répertoire en cours est représenté par .
. C'est donc ce que ls -d
répertorie.
Les répertoires du répertoire en cours sont le contenu du répertoire et ne sont donc pas affichés avec cette option.
J'utilise l'option -d
dans un alias pour afficher les fichiers et répertoires cachés
alias l.='ls -dC .* --color'
Sans -d
, ceci listera aussi le contenu des répertoires cachés, ce qui n'est pas ce que je veux.
Une autre utilisation, c’est lorsque je veux voir les métadonnées d’un répertoire à l’aide de l’option -l
, et non de son contenu:
$ ls -ld playground
drwxr-xr-x 72 zanna zanna 12288 Mar 1 23:10 playground
Si vous voulez une liste de répertoires dans le répertoire courant, vous pouvez utiliser
ls -d */
Utiliser ls
uniquement avec -d
est presque inutile. Il donne des informations sur le répertoire lui-même. Il ne répertorie pas son contenu.
C'est pourquoi vous ne voyez pas une liste de répertoires. Les répertoires que vous vous attendiez à voir sont les "contenus" du répertoire actuel
Si vous exécutez simplement ls -d
, le répertoire actuel est affiché par .
.
Si cela a du sens de l'exécuter avec d'autres clés telles que -l
.
ls -ld
montrera les permissions du répertoire courant.
pilot6@Pilot6:~$ ls -ld
drwxrwxr-x 1 pilot6 pilot6 2570 Mar 4 12:14 .
Vous pouvez également voir les autorisations de tout autre répertoire comme
ls -ld /bin
pilot6@Pilot6:~$ ls -ld /bin
drwxr-xr-x 1 root root 2584 Feb 25 15:19 /bin
Si vous exécutez ls -l
sans -d
, vous aurez la liste de toutes les autorisations pour les fichiers et les dossiers du répertoire en cours. Si vous n'en avez pas besoin, c'est un bon exemple d'utilisation de ls -ld
.
Vous pouvez lister les répertoires du répertoire actuel en
ls -d */
Utiliser ls -d
par lui-même est plutôt inutile car sans paramètre, il retourne toujours .
. Une fois que vous avez spécifié un paramètre, cela a du sens. Par exemple, si votre nom d'utilisateur est rick
et que vous voulez voir tous les répertoires de votre maison, utilisez:
$ 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/
Laissez-moi vous expliquer avec des exemples:
ls
: liste le contenu d'un répertoire
ls -d
ou ls --directory
: répertorie les répertoires eux-mêmes, pas leur contenu
Exemples:
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
Votre cas de ls -d
ceci dit: affichez-moi seulement le répertoire dans lequel je me trouve n’est pas son contenu (c’est-à-dire .
en termes Linux), le résultat est donc: .
.
Mais si vous aviez dit: ls
, alors vous verrez tout ce qui est présent dans le répertoire courant .
.
ls -d
liste les répertoires eux-mêmes au lieu de leur contenu. Les fichiers sont listés comme d'habitude. Regardez dans man ls
pour voir la description de toutes les options.
.
est le répertoire lui-même, le même que vous utilisez lorsque vous exécutez une commande à partir du répertoire en cours, ./runscript.sh
..
est le répertoire parent, parent du répertoire actuel, comme dans cd ..
pour passer à l'étape supérieure dans la hiérarchie des répertoires.