Quelle est la particularité des répertoires dont les noms commencent par un point?

25

Je me demandais quelle était la différence entre ces deux:

~/somedirectory/file.txt

et

~/.somedirectory/file.txt

Il est vraiment difficile de poser cette question sur Google car je ne savais pas comment expliquer .quand je ne savais même pas comment l'appeler. Mais quelqu'un peut-il décrire la différence entre l'inclusion du point et son exclusion?

Templier noir
la source

Réponses:

18

Sous les systèmes de type Unix, tous les répertoires contiennent deux entrées, .et.. , qui représentent respectivement le répertoire lui-même et son parent. Ces entrées ne sont pas intéressantes la plupart du temps, les lsmasquent donc, et les caractères génériques comme *ne les incluent pas. Plus généralement, les lscaractères génériques masquent tous les fichiers dont le nom commence par un .; c'est un moyen simple d'exclure .et ..et permettent aux utilisateurs de cacher d' autres fichiers de listes. En plus d'être exclus des listes, ces fichiers n'ont rien de spécial.

Unix stocke les fichiers de configuration par utilisateur dans le répertoire personnel de l'utilisateur. Si tous les fichiers de configuration apparaissaient dans des listes de fichiers, le répertoire personnel serait encombré de fichiers dont les utilisateurs ne se soucient pas tous les jours. Ainsi, les fichiers de configuration commencent toujours par un .: généralement, le fichier de configuration de l'application Foo est appelé quelque chose comme .fooou .foorc. Pour cette raison, les fichiers de configuration utilisateur sont souvent appelés fichiers de points .

Gilles 'SO- arrête d'être méchant'
la source
1
« Plus généralement, lset cachent tous les fichiers wildcards dont le nom commence par un ., ce qui est un moyen simple d'exclure .et ..et permettent aux utilisateurs de cacher d' autres fichiers de listes. » Cela ressemble à ceci: Le concept de masquer les fichiers / répertoires qui commencent par un point a en fait semblé se cacher . ... Mais plus tard, les gens ont réalisé que le fait de pouvoir cacher certains fichiers / répertoires avait une valeur et donc, ils ont commencé à mettre un point au début des fichiers qu'ils voulaient cacher. Est-ce vraiment le cas ou simplement une spéculation?
Utku
3
@Utku En fait, ce fut l'inverse, du moins dans un premier temps : le développeur original destiné à cacher seulement .et ..mais a fait une erreur . Il est cependant possible qu'il ait été dissuadé de le corriger parce que certains utilisateurs l'ont trouvé utile, et la raison pour laquelle les fichiers de configuration utilisateur commencent par .est définitivement afin qu'ils n'encombrent pas la sortie de lsdans le répertoire personnel. Je pense que nous avons une question à ce sujet ici, mais je ne la trouve pas, elle a peut-être été mal interprétée.
Gilles 'SO- arrête d'être méchant'
15

Les répertoires commençant par un point .sont considérés comme masqués. Cela signifie:

  • ~/somedirectoryet ~/.somedirectorysont différents répertoires. C'est si ~/somedirectoryexisté et que vous l'avez fait mkdir ~/.somedirectory, vous n'échouerez pas avec un File Existsmessage.

  • La lscommande n'affichera pas ces répertoires commençant par le.

  • Le ls -aaffichera les deux répertoires

À M
la source
6
ls -A affiche les fichiers et répertoires commençant par. mais ne comprend pas le. et .. entrées.
Julian
7

Pour plus de détails sur le système de fichiers Unix, consultez la norme . Plus précisément, les fichiers de points sont utilisés pour les fichiers de configuration dans un répertoire d'utilisateurs, et si un programme en a plusieurs, il doit les placer dans un répertoire de points.

Cela masque les fichiers à l'utilisateur, à moins qu'il ne veuille les trouver . De cette façon, ils ne gênent pas et les outils ne vont pas les déranger accidentellement.

Spencer Rathbun
la source
4

Le premier "." dans un répertoire ou un nom de fichier, ce répertoire ou fichier est masqué lors de l'exécution d'une lscommande.


la source
1
Vous pouvez afficher tous les fichiers commençant par "." avec ls -a.
Sardathrion
1

Comme @DaveNay l'a déjà dit, cette période entraînera la dissimulation du fichier ou du répertoire.

Pour votre deuxième question implicite, voici comment vous recherchez cela dans google:

Tapez simplement dans la zone de recherche: période linux avant le nom


la source