Warum werden Dateinamen, die mit einem Punkt beginnen, ausgeblendet? Kann ich Dateien ausblenden, ohne einen Punkt als erstes Zeichen zu verwenden?

15

Anfangs dachte ich, es sei ein Zufall, aber jetzt sehe ich, dass es dafür sogar ein Tag gibt : Alle versteckten Dateinamen beginnen mit einem Punkt. Ist das eine Konvention? Warum wurde es gewählt? Kann es geändert werden? Oder mit anderen Worten (als verwandte Frage schlug @evilsoup vor, dass dies die Antwort auf eine Reihe anderer impliziert): Kann ich Dateien ausblenden, ohne sie umzubenennen (wobei ich .als erstes Zeichen ihres Namens verwende)?

JMCF125
quelle
Oder "Warum beginnen alle versteckten Dateinamen mit einem Punkt?", Wenn Sie es vorziehen.
JMCF125
2
Ja, es ist eine Konvention, warum sie gewählt wurde, wer weiß, fragen Sie die UNIX-Pioniere, es ist eine alte Konvention.
Terdon
4
Lesen Sie den zugehörigen Wikipedia-Artikel über versteckte Dateien und plus.google.com/101960720994009339267/posts/R58WgWwN9jp, um Informationen zum Verlauf zu erhalten. Es kann nicht geändert werden.
Jofel
Ich dachte, Linux sei vollständig anpassbar ...
JMCF125
1
@ JMCF125 eigentlich kam dieser Kommentar etwas sarkastischer raus als ich gedacht hatte, sorry dafür. Fragen Sie tatsächlich: "Kann ich Dateien ausblenden, ohne sie umzubenennen?" - Wenn dies der Fall ist, sollten Sie dies in Ihre Frage einfügen.
Übelsuppe

Antworten:

26

Laut Wikipedia ,

Die Vorstellung, dass Dateinamen mit einem vorangestellten. versteckt werden sollte, ist das Ergebnis eines Software-Fehlers in den frühen Tagen von Unix. Als die Spezial- .und ..Verzeichniseinträge zum Dateisystem hinzugefügt wurden, wurde entschieden, dass der Befehl ls sie nicht anzeigen sollte. Das Programm wurde jedoch fälschlicherweise so geschrieben, dass keine Dateien, deren Name mit einem .Zeichen begann, und nicht die exakten Namen .oder ausgeschlossen wurden ...

... also hat es als Fehler angefangen und wurde dann als Feature aufgenommen (für den Datensatz .ist es ein Link zum aktuellen Verzeichnis und ..ein Link zum darüber liegenden Verzeichnis, aber ich bin mir sicher, dass Sie das bereits wissen ). Da diese Methode zum Ausblenden von Dateien die meiste Zeit gut genug ist, hat sich wahrscheinlich niemand die Mühe gemacht, das Ausblenden von Dateien im Windows-Stil zu implementieren.

Es gibt auch die Tatsache, dass die Implementierung eines anderen Verhaltens eine noch größere Fragmentierung der * nix-Welt zur Folge hätte, was das Letzte ist, was sich jeder wünscht.

Es gibt eine andere Methode zum Ausblenden von Dateien, bei der sie nicht umbenannt werden. Sie funktioniert jedoch nur für GUI-Dateimanager (und unter diesen ist sie nicht universell - die großen Linux-Unternehmen verwenden sie, aber ich glaube nicht, dass der Finder von OSX dies tut, und Je mehr Nischen-Linux-Dateimanager dieses Verhalten unterstützen, desto unwahrscheinlicher ist es, dass Sie eine Datei mit dem Namen erstellen .hiddenund die Dateinamen, die Sie verbergen möchten, in eine Zeile einfügen. lsund Shell Globs werden dies nicht respektieren, aber es könnte trotzdem nützlich für Sie sein.

Übelsuppe
quelle
Dieses Verstecken funktioniert bei Unity allerdings nicht. Da Sie jedoch alle Fragen direkt angesprochen haben, werde ich dies als akzeptierte Antwort markieren (obwohl ich beide Antworten positiv bewertet habe).
JMCF125
3
Die Wikipedia-Seite enthält dazu keine Informationen mehr. Rob Pike arbeitete jedoch bei Bell Labs an UNIX und verfasste einen kurzen Beitrag zum Thema: plus.google.com/u/0/+RobPikeTheHuman/posts/R58WgWwN9jp
Alexander
14

Dateien, die mit einem Punkt beginnen, sind standardmäßig vom Befehl "ls" ignoriert. Dieser Befehl hat mehr oder weniger den gleichen Effekt wie "versteckte" Dateien, ist jedoch nicht derselbe (andere Befehle können dies auch tun oder nicht). Dateien, die mit einem Punkt beginnen, werden nicht "ausgeblendet", da "ausgeblendet" nicht zu ihren Attributen gehört. Im Gegensatz zu DOS / Windows ist "hidden" unter Unix kein Attribut. Es gibt viele Attribute in Unix ("man chattr" sagt Ihnen alles), aber versteckt ist keines davon.

Der Grund, warum Punktedateien von "ls" ignoriert werden, ist eigentlich ziemlich lustig / peinlich. Es war keine Designentscheidung, sondern das Ergebnis eines Softwarefehlers in den Anfängen von Unix . Wenn das Besondere. und .. Verzeichniseinträge zum Dateisystem hinzugefügt wurden, wurde entschieden, dass der Befehl ls sie nicht anzeigen sollte, da sie im Weg waren. Das Programm wurde jedoch in aller Eile geschrieben, um alle Dateien auszuschließen, deren Name mit einem beginnt. Zeichen, anstatt die genauen Namen "." oder "..". Und es wurde ein Präzedenzfall geschaffen, dem seitdem in Unix gefolgt wurde. Lustigerweise haben die Unix-Leute, als sie Plan 9 erstellten, absichtlich keine Punktedateien darin abgelegt .

Sergut
quelle
Ich habe es versucht man chattr, obwohl ich dachte, ich bräuchte vielleicht ein Paket oder ein bestimmtes Programm, um andere versteckte Dateien zu ermöglichen.
JMCF125
0

Ob Sie Dateien ausblenden können oder nicht und unter welchen Bedingungen, hängt vom verwendeten Dateisystem und seinem Treiber ab. Herkömmliche Unix-Dateisysteme haben kein "hide" -Attribut für Dateien.

Ein Dateisystemtreiber kann alle gewünschten Dateien ausblenden, indem er einfach ihre Namen weglässt, wenn er Systemaufrufen Ergebnisse liefert, die zum Abrufen einer Verzeichnisliste verwendet werden. Wie Sergut in seiner Antwort beschrieben hat, sind Dateien, die mit einem Punkt beginnen, nicht wirklich verborgen.

(So ​​können Rootkits auch ihre Dateien verbergen: Sie schließen sich den Systemaufrufen an, die Verzeichnislisten erzeugen, und filtern die Dateien heraus, die sie verbergen möchten.)

In Oracle ACFS-Cluster-Dateisystemen ist das Verzeichnis <filesystem mountpoint>/.ACFS/beispielsweise wirklich verborgen: Es wird überhaupt nicht aufgelistet, auch nicht mit ls -a. Aber wenn Sie wissen, dass es dort ist, können Sie gut darauf zugreifen.

Wenn Sie die Snapshot-Funktion des ACFS-Dateisystems verwenden, können Sie über dieses .ACFSVerzeichnis auf alle vorhandenen Snapshots des Dateisystems zugreifen . Wenn es nicht ausgeblendet ist, sichert ein Sicherungsprogramm möglicherweise sowohl den aktuellen Inhalt des Dateisystems als auch den Inhalt aller vorhandenen Snapshots, was wahrscheinlich unerwünscht wäre. Normalerweise möchten Sie entweder den aktuellen Status oder den Status eines bestimmten Snapshots sichern.

telcoM
quelle