Perché i nomi dei file che iniziano con un punto sono nascosti? Posso nascondere i file senza usare un punto come primo carattere?


15

Inizialmente ho pensato che fosse una coincidenza, ma ora vedo che c'è persino un tag per esso: tutti i nomi di file nascosti iniziano con un punto. È una convenzione? Perché è stato scelto? Può essere cambiato? O in altre parole (come suggerito da una domanda relativa a @evilsoup che implica la risposta a molti altri): posso nascondere i file senza rinominarli (usando .come primo carattere del loro nome)?


Oppure "perché tutti i nomi di file nascosti iniziano con un punto?", Se preferisci.
JMCF125,

2
Sì, è una convenzione, perché è stato scelto chi lo sa, vai a chiedere ai pionieri dell'UNIX, è una vecchia convenzione.
terdon

4
Leggi l' articolo di Wikipedia correlato sui file nascosti e plus.google.com/101960720994009339267/posts/R58WgWwN9jp per gli aspetti della storia. Non può essere cambiato.
jofel,

Pensavo che Linux fosse completamente personalizzabile ...
JMCF125 il

1
@ JMCF125 in realtà quel commento è emerso come un po 'più sarcastico di quanto pensassi, mi dispiace per quello. In realtà stai chiedendo: 'posso nascondere i file senza rinominarli?' - in tal caso, dovresti modificarlo nella tua domanda.
evilsoup,

Risposte:


26

Secondo Wikipedia ,

L'idea che i nomi dei file siano preceduti da a. dovrebbe essere nascosto è il risultato di un bug del software nei primi giorni di Unix. Quando le voci speciali .e di ..directory sono state aggiunte al filesystem, si è deciso che il comando ls non dovesse visualizzarle. Tuttavia, il programma è stato erroneamente scritto per escludere qualsiasi file il cui nome è iniziato con un .carattere, anziché i nomi esatti .o ...

... quindi è iniziato come un bug, e poi è stato abbracciato come una funzione (per la cronaca, .è un collegamento alla directory corrente ed ..è un collegamento alla directory sopra di essa, ma sono sicuro che lo sai già ). Dal momento che questo metodo di nascondere i file in realtà è abbastanza buono per la maggior parte del tempo, suppongo che nessuno si sia mai preso la briga di implementare il nascondere i file in stile Windows.

C'è anche il fatto che l'implementazione di comportamenti diversi produrrebbe una quantità ancora maggiore di frammentazione nel mondo * nix, che è l'ultima cosa che chiunque vuole.

Esiste un altro metodo per nascondere i file che non comporta la ridenominazione, ma funziona solo per i file manager della GUI (e non è universale tra quelli - i principali Linux lo usano, ma non penso che il Finder di OSX lo faccia, e più i gestori di file Linux di nicchia hanno meno probabilità di supportare questo comportamento): è possibile creare un file chiamato .hiddene inserire al suo interno i nomi dei file che si desidera nascondere, uno per riga. lse i globs di conchiglia non lo rispetteranno, ma potrebbero esserti comunque utili.


Tuttavia, quel nascondiglio non funziona su Unity. Ma dato che hai indirizzato direttamente tutte le domande, lo segnerò come risposta accettata (anche se ho votato entrambe le risposte).
JMCF125,

3
La pagina di Wikipedia non contiene più informazioni al riguardo. Tuttavia, Rob Pike ha lavorato su UNIX ai Bell Labs e ha pubblicato un breve post sull'argomento: plus.google.com/u/0/+RobPikeTheHuman/posts/R58WgWwN9jp
Alexander

" OS X ", non "OSX".
Peter Mortensen, il

14

I file che iniziano con un punto vengono ignorati per impostazione predefinita dal comando "ls", che ha più o meno lo stesso effetto dei file "nascosti" ma non è lo stesso (altri comandi possono scegliere di fare lo stesso o meno). I file che iniziano con un punto non sono "nascosti" perché "nascosto" non è uno dei loro attributi. A differenza di DOS / Windows, "nascosto" non è un attributo in Unix. Ci sono molti attributi in Unix ("man chattr" ti dirà tutti loro) ma nascosto non è uno di questi.

Il motivo per cui i file dot sono ignorati da "ls" è in realtà abbastanza divertente / imbarazzante. Non è stata una decisione di progettazione, ma il risultato di un bug del software nei primi giorni di Unix . Quando lo speciale. e .. le voci della directory sono state aggiunte al filesystem, si è deciso che il comando ls non dovesse visualizzarle perché si stavano mettendo in mezzo. Tuttavia, il programma è stato scritto in fretta per escludere qualsiasi file il cui nome è iniziato con a. carattere, piuttosto che i nomi esatti "." o "..". E ha creato un precedente che è stato seguito da allora in Unix. Stranamente, quando i ragazzi di Unix sono passati a creare Plan 9 , non ci hanno messo intenzionalmente file di punti .


Ci ho provato man chattr, anche se forse pensavo che avrei bisogno di un pacchetto o di un programma specifico per rendere possibili altri file nascosti.
JMCF125,

0

La possibilità di nascondere i file o meno e in base a quali condizioni dipende dal filesystem in uso e dal relativo driver. I filesystem Unix tradizionali non hanno un attributo "nascondi" per i file.

Un driver di file system può nascondere tutti i file desiderati, semplicemente omettendo i loro nomi quando fornisce risultati alle chiamate di sistema utilizzate per ottenere un elenco di directory. Come descritto da sergut nella sua risposta, i file che iniziano con un punto non sono veramente nascosti.

(Questo è anche il modo in cui i rootkit possono nascondere i loro file: si agganciano alle chiamate di sistema che producono elenchi di directory e filtrano i file che vogliono nascondere.)

Ad esempio, nei filesystem del cluster Oracle ACFS, la directory <filesystem mountpoint>/.ACFS/è davvero nascosta: semplicemente non verrà elencata affatto, nemmeno con ls -a. Ma se sai che è lì, puoi accedervi bene.

Se stai usando la funzione snapshot del filesystem ACFS, puoi accedere a qualsiasi snapshot del filesystem esistente di quel filesystem attraverso quella .ACFSdirectory. Se non fosse nascosto, un programma di backup potrebbe finire con il backup sia del contenuto corrente del filesystem sia del contenuto di qualsiasi istantanea esistente, il che sarebbe probabilmente indesiderabile; normalmente si desidera eseguire il backup dello stato corrente o dello stato di un'istantanea specifica.

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.