J'ai cherché un dossier ".android
" et utilisé ls
partout, jusqu'à ce que je décide d'utiliser locate
(après un updatedb
) et j'ai découvert qu'il se trouvait dans mon dossier /home/johndoe/
depuis le début. Lorsque je fais un ls
sur le dossier, le dossier .android
n'apparaît pas dans la liste. Est-ce que quelqu'un peut m'expliquer pourquoi il ne s'affiche pas avec ma commande ls
adorée ?
Réponses
Trop de publicités?Traditionnellement, dans les systèmes d'exploitation UNIX et similaires à UNIX, le préfixe .
signifie un fichier caché, similaire au drapeau "Caché" sur Windows. Il fonctionne partout, mais son utilisation principale est de cacher les fichiers de configuration dans votre répertoire personnel (par exemple ~/.cache/
ou ~/.plan
- ils sont souvent appelés "dotfiles").
Pour forcer ls
à afficher les fichiers cachés, vous avez besoin de l'option -a
.
Presque tous les gestionnaires de fichiers graphiques respectent également ce préfixe; CtrlH bascule les fichiers "cachés" dans GNOME.
Comme l'a écrit Rob Pike sur Google+ writes on Google+, il s'agissait d'une fonctionnalité accidentelle :
Il y a longtemps, alors que la conception du système de fichiers Unix était en cours, les entrées . et .. sont apparues, pour faciliter la navigation. Je ne suis pas sûr mais je crois que .. est apparu lors de la réécriture de la Version 2, lorsque le système de fichiers est devenu hiérarchique (il avait une structure très différente auparavant). Lorsque l'on tapait ls, cependant, ces fichiers apparaissaient, donc soit Ken soit Dennis a ajouté un test simple au programme. C'était en assembleur à l'époque, mais le code en question était équivalent à quelque chose comme ceci :
if (name[0] == '.') continue;
Cette déclaration était un peu plus courte que ce qu'elle aurait dû être, qui est
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
mais bon, c'était facile.
Deux choses en ont résulté.
Premièrement, un mauvais précédent a été établi. Beaucoup d'autres programmeurs paresseux ont introduit des bugs en faisant la même simplification. Les fichiers réels commençant par des points sont souvent sautés alors qu'ils devraient être comptés.
Deuxièmement, et bien pire, l'idée d'un fichier "caché" ou "dot" a été créée. En conséquence, plus de programmeurs paresseux ont commencé à déposer des fichiers dans le répertoire personnel de tout le monde. Je n'ai pas beaucoup de choses installées sur la machine que j'utilise pour taper ceci, mais mon répertoire personnel contient une centaine de fichiers "dot" et je ne sais même pas ce que sont la plupart d'entre eux ni s'ils sont toujours nécessaires. Chaque évaluation de nom de fichier qui passe par mon répertoire personnel est ralentie par cette boue accumulée.
Vous devez passer le "-a" pour le paramètre "all" pour que ls affiche les fichiers point.