Affiche-t-il les noms de fichiers cachés dans tous les répertoires ? Ou juste le répertoire courant (y compris tout répertoire à l'intérieur) ? Je ne comprends pas pourquoi ls -ld .*
renvoie des résultats différents (il affiche les fichiers et répertoires cachés UNIQUEMENT dans le répertoire en cours, sans afficher les fichiers à l'intérieur d'un autre répertoire à l'intérieur) ? Qu'est-ce que -d
faire seul (ls -d
) ?
Réponse acceptée :
ls -al .*
affiche le contenu de tous les répertoires du répertoire courant dont les noms commencent par .
(c'est-à-dire tous ceux correspondant au shell glob .*
)
Dans Bash, le .*
glob se résout en .
et ..
aussi bien. Depuis .
représente le répertoire courant, et ..
le répertoire parent, le contenu de ces deux répertoires, y compris les fichiers et répertoires cachés, est également affiché.
.*
intercepte également les fichiers cachés dans le répertoire courant, mais ils sont quand même répertoriés comme contenu de .
Comme expliqué dans Que signifie `ls –directory` ? le -d
flag provoque l'affichage des répertoires eux-mêmes, au lieu de leur contenu.
c'est également le cas dans dash, qui est le shell lié symboliquement à sh
dans Ubuntu. Cependant, d'autres shells, y compris zsh et mksh, se comportent de manière plus intuitive et n'incluent pas .
et ..
lors de l'expansion de .*
. Il convient également de noter que, bien que la plupart des commandes fonctionnent sur ..
et .
lorsqu'ils sont inclus dans un .*
glob (y compris chmod
et chown
– vous pouvez vraiment gâcher votre système avec ceux-là), le rm
commande échouera de par sa conception.