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


34

Par exemple, dans My Documents, il existe les dossiers suivants:

.ssh
.subversion

Est-ce que c'est une sorte de convention de nommage dont je ne suis pas au courant?

Réponses:


94

Cette convention de dénomination provient de systèmes d'exploitation de type Unix (tels que Linux ou OS X), où elle désigne un fichier ou un répertoire "caché". Cela fonctionne n'importe où, 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 "fichiers de points").

Les fichiers Dotfiles pourraient en quelque sorte être appelés l'équivalent Unix traditionnel du répertoire "AppData" sous Windows. (De nombreux programmes Linux sont modifiés pour suivre la spécification du répertoire de base XDG , en déplaçant leur configuration vers ~/.config/et d'autres données vers ~/.cache/& ~/.local/share/- cela le rend un peu plus similaire à AppData\Roaminget AppData\Local.)

Vous disposez de ces répertoires .sshet .subversionde Windows car vous avez utilisé certains programmes, notamment OpenSSH et Subversion , qui ont été portés pour utiliser les API système Windows plutôt que POSIX, mais n'ont pas été ajustés pour d'autres conventions Windows.

Parfois, cette adaptation est ignorée intentionnellement, afin de faciliter la vie des personnes qui utilisent des environnements de type Unix tels que Cygwin sur leurs systèmes Windows. Par exemple, Cygwin installe le jeu standard d'outils de type Unix ls, qui ignore l'indicateur "masqué" de Windows et n'honore que les .dotfilenoms. En outre, utiliser le même emplacement (par exemple <home>/.ssh) peut faciliter la synchronisation de la configuration entre les ordinateurs Windows et Linux / BSD / OSX.

Aussi: En général , ces fichiers sont de l'utilisateur du répertoire , par exemple sous Linux ou sous Windows 7+. Il est assez rare qu’ils soient placés dans les sous-répertoires "Documents" ou "Mes documents"./home/name/.sshC:\Users\name\.ssh


Comme Rob Pike écrit sur 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 d'élaboration, les entrées .et ..apparaissaient pour faciliter la navigation. Je ne suis pas sûr, mais je pense que cela a ..été pris en compte 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). Cependant, quand on tapait ls, ces fichiers apparaissaient. Ken ou Dennis ajoutèrent donc un simple test au programme. C'était en assembleur alors, 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, ce qui est

if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

mais bon, c'était facile.

Deux choses ont résulté.

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 fichier «caché» ou «point» a été créée. En conséquence, de plus en 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 cela, mais mon répertoire personnel contient une centaine de fichiers .dot et je ne sais même pas ce que la plupart d'entre eux sont ou s'ils sont toujours nécessaires. . Chaque évaluation de nom de fichier qui passe par mon répertoire personnel est ralentie par ces boues accumulées.


Merci! Très complet. Dans mon dossier "C: \ utilisateurs \ <nom d'utilisateur> \", j'ai essayé d'utiliser la commande "ls" dans Windows PowerShell et à nouveau dans le terminal Cygwin. PowerShell liste les fichiers point et masque AppData, alors que Cygwin Terminal fait exactement le contraire. Intéressant! Cygwin utilise la convention Unix.
Niko Bellic

@NikoBellic: Unix / Cygwin lsa la -apossibilité de lister tous les fichiers.
Grawity

1
@Ruslan: Par exemple: VMS n'avait aucun fichier caché; vous vous retrouveriez avec des choses comme LOGIN.COMou DECW$MAIL.DAT dans votre répertoire personnel . (Je ne sais pas quels autres systèmes étaient populaires à cette époque.) Unix venait juste d'être créé; il n'y avait pas de convention du tout.
Grawity

2
@grawity MS-DOS 1.0 était un système d'exploitation de style DEC créé par Digital Research et acheté par Microsoft, qui était actif dans le système Unix à l'époque. MS-DOS 2.0 et versions ultérieures ont ajouté un système de fichiers hiérarchique et certaines conventions Unix, notamment ..pour "up dir"; Microsoft a en fait annoncé ces "fonctionnalités Unix avancées".
Fred Foo

1
@grawity Ah oui, c’était le CP / M de DRI de Seattle Computer Products. Désolé. Mais je voulais dire que Microsoft était un magasin Unix au début des années 80 et que les systèmes DEC n'étaient pas le seul point de départ. (Unix fonctionnait à l'origine sur du matériel DEC, mais je pense qu'il a été davantage influencé par CTSS et Multics que par les systèmes d'exploitation.)
Fred Foo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.