Cosa c'è di così speciale nelle directory i cui nomi iniziano con un punto?


25

Mi chiedevo quale fosse la differenza tra questi due:

~/somedirectory/file.txt

e

~/.somedirectory/file.txt

È davvero difficile chiedere questo su Google poiché non sapevo come spiegare .quando non sapevo nemmeno come chiamarlo. Ma qualcuno può descrivere la differenza tra l'inclusione del punto e l'esclusione?

Risposte:


18

In sistemi unix-like, tutte le directory contengono due voci .e.. , che rappresentano rispettivamente la directory stessa e il suo genitore. Queste voci non sono interessanti per la maggior parte del tempo, quindi le lsnasconde e i caratteri jolly della shell come *non le includono. Più in generale, i lscaratteri jolly nascondono tutti i file il cui nome inizia con un .; questo è un modo semplice per escludere .ed ..e consentono agli utenti di nascondere altri file dagli elenchi. Oltre ad essere escluso dagli elenchi, non c'è nulla di speciale in questi file.

Unix memorizza i file di configurazione per utente nella home directory dell'utente. Se tutti i file di configurazione apparissero negli elenchi dei file, la home directory sarebbe ingombra di file di cui gli utenti non si preoccupano ogni giorno. Quindi i file di configurazione iniziano sempre con un .: in genere, il file di configurazione per l'applicazione Foo è chiamato qualcosa di simile .fooo .foorc. Per questo motivo, i file di configurazione dell'utente sono spesso noti come file dot .


1
"Più in generale, lse caratteri jolly nascondono tutti i file il cui nome inizia con una ., questo è un modo semplice per escludere .ed ..e consentono agli utenti di nascondere altri file dagli elenchi." Questo sembra il seguente: Il concetto di nascondere file / directory che iniziano con un punto sembra effettivamente nascosto . ... Ma più tardi, le persone hanno capito che essere in grado di nascondere alcuni file / directory ha un valore in esso e, quindi, hanno iniziato a mettere un punto all'inizio dei file che vogliono essere nascosti. È davvero così o solo una speculazione?
Utku,

3
@Utku In realtà, è stato il contrario, almeno all'inizio: lo sviluppatore originale intendeva solo nascondersi .e ha ..fatto un errore . È tuttavia possibile che sia stato dissuaso dal risolverlo perché alcuni utenti lo hanno trovato utile e il motivo per cui iniziano i file di configurazione dell'utente .è sicuramente in modo che non ingombrino l'output lsnella directory home. Penso che abbiamo una domanda su questo qui ma non riesco a trovarlo, potrebbe essere stato sbagliato.
Gilles 'SO- smetti di essere malvagio' il

15

Le directory che iniziano con un punto .sono considerate nascoste. Questo significa:

  • ~/somedirectorye ~/.somedirectorysono directory diverse. Cioè se ~/somedirectoryesistesse e tu lo facessi mkdir ~/.somedirectory, non fallirai con un File Existsmessaggio.

  • Il lscomando non mostrerà quelle directory che iniziano con.

  • Il ls -amostrerà entrambe le directory


6
ls -A visualizza i file e le directory che iniziano con. ma non include il file. e .. voci.
Julian,

7

Per i dettagli sul file system Unix, consultare lo standard . In particolare, i file dot vengono utilizzati per i file di configurazione in una directory degli utenti e, se un programma ne ha più di uno, dovrebbe inserirli in una directory dei punti.

Questo nasconde i file dall'utente, a meno che non voglia trovarli . In questo modo non si intromettono e gli strumenti non li rovinano accidentalmente.


4

Il principale "." in una directory o in un nome di file, tale directory o file viene nascosta quando si esegue un lscomando.


1
Puoi visualizzare tutti i file che iniziano con "." con ls -a.
Sardathrion - Ripristina Monica il

1

Come già detto da @DaveNay, quel periodo farà nascondere il file o la directory.

Per la tua seconda domanda implicita, ecco come la cerchi in google:

Basta digitare nella casella di ricerca: periodo linux prima del nome

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.