Warum enthält das /-Verzeichnis die Zeichenfolge .. und was bedeutet das?

Warum enthält das /-Verzeichnis die Zeichenfolge .. und was bedeutet das?

Während im /Verzeichnis und verwenden Sie ls -a das Ergebnis wird enthalten .und..

Ich kann die Existenz von verstehen, das .ein Zeiger auf das Verzeichnis selbst ist. Was bedeutet es, wenn ..im /Verzeichnis vorhanden ist, obwohl es kein übergeordnetes Verzeichnis für gibt /?

Antwort1

Viele Softwareprogramme basieren auf Annahmen,nichtDies wird ihnen tatsächlich durch POSIX.1 garantiert, ist aber traditionell auf UNIX-Systemen der Fall und in weiten Teilen der UNIX-Literatur verankert (um ein solches Stück UNIX-Literatur zu zitieren):

Jedes Verzeichnis enthält die Dateinamen Punkt und Punkt-Punkt ( .und ..), deren Inode-Nummern denen des Verzeichnisses bzw. seines übergeordneten Verzeichnisses entsprechen.[…]Das Programm mkfsinitialisiert ein Dateisystem, sodass .und ..des Stammverzeichnisses die Stamm-Inode-Nummer des Dateisystems haben.

— Maurice J. Bach (1986).Der Entwurf des UNIX-Betriebssystems. Prentice Hall. Seite 73

Zum Beispiel: Die alte getcwd()Bibliotheksfunktion (auf Systemen, die keine spezielle Kernel-Unterstützung dafür bereitstellten) verlässt sich darauf, umwissen, wann man aufhören mussVerfolgen der Eintragskette ..beim Erstellen des aktuellen Verzeichnisnamens. Es stoppt, wenn es ein Verzeichnis erreicht, das sein eigenes übergeordnetes Verzeichnis ist oder zu dem es nicht wechseln kann ...

Der Grund dafür, dass das Stammverzeichnis (oder zumindest was Programme im Anwendungsmodus betrifft)erscheintzu haben, wie durch die System-API gesehen) ein ..Eintrag ist, dass eine Menge Dinge auf der Annahme basieren, dassjedenVerzeichnis hat ..und dass ..im Stammverzeichnis eine Schleife verwendet werden kann, um festzustellen, dass man sich im Stammverzeichnis befindet.

POSIX.1 garantiert nicht, dass das Stammverzeichnis ein hat .., sondern gibt lediglich an, dassProgramme müssen die Möglichkeit einer Schleife berücksichtigen, wenngibt es ein ..im Stammverzeichnis. Dies soll es auch Nicht-UNIX-Systemen ermöglichen, POSIX-konform zu sein. Es gibt Dateisysteme, bei denen dasAbwesenheitof ..gibt an, dass ein Verzeichnis ein Stammverzeichnis ist. Und es gibt, wie Bach selbst erläutert, Systeme, in denen es ein Verzeichnis gibtüberdie Wurzel, die POSIX.1 in seiner Diskussion über absolute Pfadnamen zulässt, die mitzweiSchrägstriche (ähnlich der Universal Naming Convention, die in lokalen Netzwerksystemen von Microsoft verwendet wird).

Linux (und damit Ubuntu Linux) bietet jedoch die strengeren Garantien des UNIX-Paradigmas.

Antwort2

Ganz einfach: mittels Dateiverzeichnis, ./alsodieser Ordner, während ../bedeutetwo sich die Datei befindet(Wenn ich mich beispielsweise im Verzeichnis befinde user/home/me/Desktop, ../gelange ich zu /user/home/me).

verwandte Informationen