Warum war '.' ausgewählt, um das aktuelle Verzeichnis und '..' für das übergeordnete Verzeichnis darzustellen?

Antworten:

16

Ich bezweifle, dass Sie eine ebenso interessante Antwort finden werden wie auf die Tilde-Frage!

Ich war nicht dabei, aber ... ist wie ein Auslassungspunkt (...), der in Zusammenhängen wie sinnvoll ist cd ../../../there. Auch und besonders im Hinblick auf die alte Terminal-Tastatur aus dem Tilde-Fall gibt es nicht viele zulässige Zeichen für diesen Zweck. Sie müssen auch nicht wechseln .. Es ist perfekt.

Die Tatsache, dass ein Punktpräfix für versteckte Dateien verwendet wird, könnte ein weiterer Grund sein. Versteckte Dateien werden von Tools wie nicht standardmäßig aufgelistet, ebenso wenig wie lsdie im Wesentlichen redundanten .und ... Redundant in dem Sinne, dass es keinen Sinn macht, sie zusammen mit anderen Dateien zu betrachten - ansonsten sind sie sicherlich nützlich.

Wie sich herausstellt, kann ich es rückwärts haben ... aus Wikipedia :

Die Vorstellung, dass Dateinamen mit einem '.' versteckt werden sollte, ist das Ergebnis eines Software-Fehlers in den frühen Tagen von Unix. Wenn das besondere '.' Wenn dem Dateisystem Verzeichniseinträge mit dem Zusatz '..' hinzugefügt wurden, wurde entschieden, dass sie mit dem Befehl ls nicht angezeigt werden sollen. Das ls-Programm wurde jedoch fälschlicherweise geschrieben, um alle Dateien auszuschließen, deren Name mit einem '.' Begann, anstatt nur Dateien mit dem Namen '.' oder '..'.

Dies erweist sich beim Programmieren als nützlich. da das System enthält. und .. als Reaktion auf readdir()Typbefehle (und Shell-Globs) können diese ignoriert und versteckte Dateien auf die gleiche Weise ausgeführt werden.

Eine andere Meinung zu diesem Nutzungswert finden Sie in der Referenz für das Wikipedia-Zitat. Natürlich könnte die ganze Geschichte apokryphisch sein ... es ist kaum zu glauben, dass z. B. Dennis Ritchie dachte, nur nach dem ersten Charakter zu sehen, wäre in Ordnung.

Ich bin nicht einverstanden mit dem Autor vis, es wäre besser, versteckte Konfigurationsdateien in einem eigenen Verzeichnis abzulegen, als ihnen ein universelles Präfix zu geben. Das Präfix ist viel flexibler und ermöglicht Direktiven wie .gitignoreund in der Baumstruktur .htaccess. Zeuge, dass Dateien dieser Art auch zusammen angezeigt werden, wenn sie lexikografisch sortiert werden - vielleicht war dies schließlich mit Absicht so .

Goldlöckchen
quelle
2

Meist die gleiche Antwort wie bei @Panos auf stackoverflow :

Kurz gesagt, es ist aus dund dd(dem dVerzeichnis und dem dVerzeichnis des dVerzeichnisses) hervorgegangen, die von Benutzern von Hand erstellt wurden. dwurde dot , und diese .und ..wurden zuerst vom mkdirDienstprogramm erstellt (setuid nach dem Verknüpfen von Verzeichnissen wurde nicht mehr vom bloßen Benutzer zugelassen) und später vom mkdir Systemaufruf.

Auszug aus einem Interview mit Ken Thompson (06.09.1989):

MSM : Aber für den Benutzer würde es ungefähr so ​​aussehen wie eine Hierarchie von Verzeichnissen.

Thompson : Nein, der erste war ein DG. Tatsächlich war es nicht einmal azyklisch. Wenn Sie das UNIX-Dateisystem verstehen, war es .... da war die I-Liste, die eine Definition aller Dateien auf dem System ist. Und dann waren einige dieser Dateien Verzeichnisse, die nur Namen und I-Nummern enthielten. Es gibt nichts, was es an einen Baum bindet. Es war also überhaupt nicht hierarchisch.

MSM : Ich verstehe.

Thompson : Und wir haben es nicht an einen Baum gebunden. Wir haben mit verschiedenen Topologien experimentiert. Am Ende haben wir uns konkretisiert und die Topologien erzwungen, die tatsächlich die Topologien waren, die gemäß Konvention aus diesem System stammten. The ... Jedes Mal, wenn wir ein Verzeichnis erstellt haben, haben wir es gemäß der Konvention in ein anderes Verzeichnis namens directory - directory gestellt , das dd war. Sein Name war dd und dass alle Benutzerverzeichnisse und in der Tat die meisten anderen Verzeichnisse, Benutzer ihre eigenen Verzeichnissysteme pflegen, Zeiger zurück zu dd hatten und dd zu dot-dot verkürzt wurde, und dd war für directory-directory. Es war der Ort, an dem Sie zu allen anderen Verzeichnissen im System gelangen konnten, um diese Spaghetti-Schüssel zu warten. Ich meine also, dass dieser Tuff in verschiedenen Formen, der in dieser GD-Implementierung von nur zufälligen Verzeichnissen und Dateien strikt üblich war, in eine von uns gepflegte Typologie gezwungen wurde. Als wir angefangen haben, Dinge wie Dateisysteme zu schreiben, die Programme und Dinge überprüfen, das Sperren der Spaghetti-Bowl-Verzeichnisse und das Auffinden nicht zusammenhängender Dinge, meine ich, Sie würden etwas dissever und nie zurückbekommen, weil Sie wissen, dass Sie es verloren haben. Diese Probleme wurden nahezu unüberwindbar, und so haben wir in der nächsten Implementierung eine stärkere Typologie erzwungen.

Stéphane Chazelas
quelle