Page d'accueil » comment » Pourquoi certains noms de fichiers et de dossiers Windows ont-ils un point devant eux?

    Pourquoi certains noms de fichiers et de dossiers Windows ont-ils un point devant eux?

    Alors que la plupart d’entre nous ne voyons que des noms de fichiers et de dossiers normaux sur nos systèmes Windows, d’autres personnes ont peut-être rencontré quelque chose de plus inattendu: des noms de fichiers et de dossiers précédés d’un point. Pourquoi cela arrive-t-il? Le message du Q & R sur le SuperUser d'aujourd'hui répond à la question d'un lecteur très curieux.

    La séance de questions et réponses d'aujourd'hui nous est offerte par SuperUser, une sous-division de Stack Exchange, un groupe de sites Web de questions-réponses dirigé par la communauté..

    Photo gracieuseté de Domiriel (Flickr).

    La question

    Le lecteur superutilisateur Niko Bellic veut savoir pourquoi certains noms de fichiers et de dossiers Windows ont un point devant eux:

    Par exemple, dans le Mes documents répertoire sur mon système Windows, j'ai trouvé les dossiers suivants:

    • .ssh
    • .subversion

    Est-ce une sorte de convention de nommage que je ne connais pas??

    Pourquoi certains noms de fichiers et de dossiers Windows ont-ils un point devant eux??

    La réponse

    Grawity, contributeur au superutilisateur, a la solution pour nous:

    Cette convention de dénomination provient de systèmes d’exploitation de type Unix (tels que Linux ou OSX) où elle signifie fichier caché ou annuaire. Il fonctionne n’importe où, mais il sert principalement à masquer les fichiers de configuration de votre répertoire personnel (i.e. ~ / .cache / ou ~ / .plan) Ils sont fréquemment appelés fichiers de points.

    Fichiers Dot pourrait en quelque sorte être appelé l’équivalent Unix traditionnel du Données d'application répertoire sous Windows. Pendant ce temps, de nombreux programmes Linux sont modifiés pour suivre la spécification du répertoire de base XDG, déplaçant leur configuration vers ~ / .config / et d'autres données à ~ / .cache / et ~ / .local / share /. Cela le rend plus semblable à AppData \ Roaming et AppData \ Local.

    Vous avez ces .ssh et .subversion des répertoires sous Windows, car vous avez utilisé certains programmes (en particulier OpenSSH et Subversion) qui ont été portés pour utiliser les API système Windows plutôt que les API POSIX, mais n'ont pas été ajustés pour certaines conventions Windows.

    Parfois, cette adaptation est délibérément ignorée pour simplifier la vie des personnes qui utilisent des environnements de type Unix tels que Cygwin sur leurs systèmes Windows. Par exemple, Cygwin installe l’ensemble standard d’outils de type Unix tels que ls, qui ignore les fenêtres drapeau caché et seulement honore le fichier de points des noms. Il est également plus facile de synchroniser les configurations entre les ordinateurs Windows et les ordinateurs Linux / BSD / OSX d’un individu s’il est partagé au même endroit..

    Ces fichiers se trouvent généralement dans le répertoire de base de l'utilisateur (i.e. /home/name/.ssh sur Linux ou C: \ Utilisateurs \ Nom \ .ssh sous Windows 7 et versions ultérieures). Il est assez rare qu'ils soient mis à la Les documents ou Mes documents sous-répertoires (ils ne contiennent pas de documents après tout).

    Comme Rob Pike écrit sur Google+, il s'agissait d'une fonctionnalité accidentelle:

    Il y a bien longtemps, alors que la conception du système de fichiers Unix était en cours d'élaboration, les entrées . et apparu pour faciliter la navigation. Je ne suis pas sûr, mais je crois lors de la réécriture de la version 2 lorsque le système de fichiers est devenu hiérarchique (sa structure était très différente au début). Quand on tape ls, Cependant, ces fichiers sont apparus et Ken ou Dennis ont donc ajouté un test simple au programme. C'était en assembleur alors, mais le code en question était équivalent à quelque chose comme ceci:

    • si (nom [0] == '.') continue;

    Cette déclaration était un peu plus courte que ce qu'elle aurait dû être, à savoir:

    • if (strcmp (nom, “.”) == 0 || strcmp (nom, “…”) == 0) continue;

    Mais bon, c'était facile et il en a résulté deux choses.

    Premièrement, un mauvais précédent a été créé. Beaucoup d'autres programmeurs paresseux ont introduit des bugs en faisant la même simplification. Les fichiers réels commençant par des périodes sont souvent ignorés lorsqu'ils doivent être comptés.

    Deuxièmement, et bien pire, l’idée d’un caché ou fichier de points a été créé. En conséquence, davantage de programmeurs paresseux ont commencé à déposer des fichiers dans le répertoire personnel de tout le monde. Je n'ai pas beaucoup de logiciels installés sur l'ordinateur que j'utilise pour taper ceci, mais mon répertoire personnel en contient une centaine. fichiers de points et je ne sais même pas ce que la plupart d'entre eux sont ou s'ils sont encore nécessaires. Chaque évaluation de nom de fichier passant par mon répertoire personnel est ralentie par ces boues accumulées..


    Avez-vous quelque chose à ajouter à l'explication? Sound off dans les commentaires. Voulez-vous lire plus de réponses d'autres utilisateurs de Stack Exchange doués en technologie? Découvrez le fil de discussion complet ici.