Au début, je pensais que c'était une coïncidence, mais maintenant je vois qu'il y a même une balise pour cela: tous les noms de fichiers cachés commencent par un point. Est-ce une convention? Pourquoi at-il été choisi? Peut-il être changé? Ou en d'autres termes (comme une question connexe suggérée par @evilsoup implique la réponse à un tas d'autres): puis-je masquer des fichiers sans les renommer (en utilisant .
comme premier caractère de leur nom)?
filesystems
filenames
dot-files
JMCF125
la source
la source
Réponses:
Selon Wikipedia ,
... donc cela a commencé comme un bug, puis il a été adopté comme une fonctionnalité (pour mémoire,
.
est un lien vers le répertoire actuel et..
un lien vers le répertoire au-dessus, mais je suis sûr que vous le savez déjà ). Étant donné que cette méthode de masquage de fichiers est en fait assez bonne la plupart du temps, je suppose que personne n'a jamais pris la peine d'implémenter le masquage de fichiers de style Windows.Il y a aussi le fait que l'implémentation d'un comportement différent produirait une quantité encore plus grande de fragmentation dans le monde * nix, ce qui est la dernière chose que l'on veut.
Il existe une autre méthode pour masquer les fichiers qui ne nécessite pas de les renommer, mais cela ne fonctionne que pour les gestionnaires de fichiers GUI (et ce n'est pas universel parmi ceux-ci - les principaux Linux l'utilisent, mais je ne pense pas que le Finder d'OSX le fasse, et les gestionnaires de fichiers Linux les plus spécialisés sont moins susceptibles de prendre en charge ce comportement): vous pouvez créer un fichier appelé
.hidden
et y mettre les noms de fichiers que vous souhaitez masquer, un par ligne.ls
et les globes shell ne respecteront pas cela, mais cela pourrait encore vous être utile.la source
Les fichiers commençant par un point sont ignorés par défaut par la commande "ls", qui a plus ou moins le même effet que les fichiers "cachés" mais n'est pas le même (d'autres commandes peuvent choisir de faire de même ou non). Les fichiers commençant par un point ne sont pas "masqués" car "masqué" ne fait pas partie de leurs attributs. Contrairement à DOS / Windows, "caché" n'est pas un attribut sous Unix. Il existe de nombreux attributs dans Unix ("man chattr" vous les dira tous) mais masqué n'en fait pas partie.
La raison pour laquelle les fichiers dot sont ignorés par "ls" est en fait assez drôle / embarrassant. Ce n'était pas une décision de conception mais le résultat d'un bug logiciel dans les premiers jours d'Unix . Quand le spécial. et .. des entrées de répertoire ont été ajoutées au système de fichiers, il a été décidé que la commande ls ne devrait pas les afficher car elles gênaient. Cependant, le programme a été écrit à la hâte pour exclure tout fichier dont le nom commençait par a. plutôt que les noms exacts "." ou "..". Et cela a créé un précédent qui a été suivi depuis lors sous Unix. Curieusement, lorsque les gars d'Unix sont passés à la création de Plan 9, ils n'y ont pas mis intentionnellement des fichiers dot .
la source
man chattr
, même si je pensais que j'aurais peut-être besoin d'un package ou d'un programme spécifique pour rendre d'autres fichiers cachés possibles.Que vous puissiez masquer des fichiers ou non, et à quelles conditions, cela dépend du système de fichiers que vous utilisez et de son pilote. Les systèmes de fichiers Unix traditionnels n'ont pas d'attribut "masquer" pour les fichiers.
Un pilote de système de fichiers peut masquer tous les fichiers qu'il souhaite, en omettant simplement leurs noms lorsqu'il fournit des résultats aux appels système utilisés pour obtenir une liste de répertoires. Comme sergut l'a décrit dans sa réponse, les fichiers commençant par un point ne sont pas vraiment cachés.
(C'est également ainsi que les rootkits peuvent masquer leurs fichiers: ils se connectent aux appels système qui produisent des listes de répertoires et filtrent les fichiers qu'ils souhaitent masquer.)
Par exemple, dans les systèmes de fichiers du cluster Oracle ACFS, le répertoire
<filesystem mountpoint>/.ACFS/
est vraiment caché: il ne sera tout simplement pas répertorié, pas même avecls -a
. Mais si vous savez que c'est là, vous pouvez y accéder très bien.Si vous utilisez la fonction de capture instantanée du système de fichiers ACFS, vous pouvez accéder à toutes les captures instantanées de système de fichiers existantes de ce système de fichiers via ce
.ACFS
répertoire. S'il n'était pas masqué, un programme de sauvegarde pourrait finir par sauvegarder à la fois le contenu actuel du système de fichiers et le contenu de tout instantané existant, ce qui serait probablement indésirable; normalement, vous souhaitez sauvegarder l'état actuel ou l'état d'un instantané spécifique.la source