Perché alcuni nomi di file / cartelle su Windows hanno un punto davanti?


34

Ad esempio, in My Documents, ci sono le seguenti cartelle:

.ssh
.subversion

È una sorta di convenzione di denominazione di cui non sono a conoscenza?

Risposte:


94

Questa convenzione di denominazione proviene da sistemi operativi simili a Unix (come Linux o OS X), dove significa un file o una directory "nascosti". Funziona ovunque, ma il suo uso principale è quello di nascondere i file di configurazione nella tua home directory (es. ~/.cache/O ~/.plan- sono spesso chiamati "dotfile").

I dotfile potrebbero, in un certo senso, essere chiamati l'equivalente Unix tradizionale della directory "AppData" su Windows. (Molti programmi Linux vengono modificati per seguire le specifiche della directory di base XDG , spostando la loro configurazione su ~/.config/e altri dati su ~/.cache/& ~/.local/share/- questo lo rende un po 'più simile a AppData\Roaminge AppData\Local.)

Hai queste .sshe .subversiondirectory su Windows perché hai usato alcuni programmi - in particolare OpenSSH e Subversion - che sono stati portati per usare le API di sistema di Windows anziché quelle di POSIX, ma non sono stati adattati per alcune altre convenzioni di Windows.

A volte questo adattamento viene saltato intenzionalmente, per semplificare la vita delle persone che usano ambienti simili a Unix come Cygwin sui loro sistemi Windows. Ad esempio, Cygwin installa il set standard di strumenti simili a Unix come ls, che ignora il flag "nascosto" di Windows e onora solo i .dotfilenomi. Inoltre, l'utilizzo della stessa posizione (ad es. <home>/.ssh) Può semplificare la sincronizzazione della configurazione tra i propri computer Windows e Linux / BSD / OSX.

Inoltre: in genere questi file si trovano nella home directory dell'utente , ad esempio su Linux o su Windows 7+. È abbastanza raro che vengano inseriti nelle sottodirectory "Documenti" o "I miei documenti"./home/name/.sshC:\Users\name\.ssh


Mentre Rob Pike scrive su Google+ , questa è stata una caratteristica accidentale:

Molto tempo fa, mentre il progetto del file system Unix veniva elaborato, le voci .e le voci ..apparivano per facilitare la navigazione. Non ne sono sicuro, ma credo che sia ..entrato durante la riscrittura della versione 2, quando il file system è diventato gerarchico (aveva una struttura molto diversa all'inizio). Quando si digitava ls, tuttavia, venivano visualizzati questi file, quindi Ken o Dennis aggiungevano un semplice test al programma. Allora era in assembler, ma il codice in questione era equivalente a qualcosa del genere:

if (name[0] == '.') continue;

Questa affermazione era un po 'più breve di quello che avrebbe dovuto essere, che è

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

ma ehi, è stato facile.

Ne risultarono due cose.

Innanzitutto, è stato impostato un precedente negativo. Molti altri programmatori pigri hanno introdotto dei bug apportando la stessa semplificazione. I file effettivi che iniziano con punti vengono spesso ignorati quando devono essere conteggiati.

In secondo luogo, e molto peggio, è stata creata l'idea di un file "nascosto" o "punto". Di conseguenza, più programmatori pigri hanno iniziato a trascinare i file nella home directory di tutti. Non ho troppe cose installate sul computer che sto usando per digitare questo, ma la mia directory home ha circa un centinaio di file di punti e non so nemmeno cosa siano la maggior parte di loro o se siano ancora necessari . Ogni valutazione del nome del file che passa attraverso la mia home directory è rallentata da questo fango accumulato.


Grazie! Molto approfondito. Nella mia cartella "C: \ users \ <nomeutente> \", ho provato a utilizzare il comando "ls" in Windows PowerShell e di nuovo in Cygwin Terminal. PowerShell elenca i file di punti e nasconde AppData, mentre Cygwin Terminal fa esattamente l'opposto. Interessante! Cygwin sta usando la convenzione Unix.
Niko Bellic,

@NikoBellic: Unix / Cygwin lsha la -apossibilità di elencare tutti i file.
gravità

1
@Ruslan: Ad esempio: VMS non aveva affatto file nascosti; finiresti con cose come LOGIN.COMo DECW$MAIL.DAT nella tua home directory . (Non sono sicuro di quali altri sistemi fossero popolari in quel momento.) Unix era stato appena creato di recente; non aveva alcuna convenzione.
gravità

2
@grawity MS-DOS 1.0 era un O / S in stile DEC fatto da Digital Research e acquistato da Microsoft, che all'epoca era nel settore Unix . MS-DOS 2.0 e versioni successive hanno aggiunto un filesystem gerarchico e alcune convenzioni Unix incluso .."up dir"; Microsoft ha pubblicizzato queste "funzionalità Unix avanzate".
Fred Foo,

1
@grawity Ah giusto, era Seattle Computer Products a clonare il CP / M di DRI. Scusate. Ma il mio punto era che Microsoft era un negozio Unix nei primi anni '80 e che i sistemi DEC non erano l'unico punto di partenza. (Unix originariamente funzionava su hardware DEC, ma penso che sia stato influenzato più da CTSS e Multics che da DEC OS.)
Fred Foo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.