Ich versuche die Natur von ..
(Doppelpunkt) zu verstehen . Es scheint auf verschiedene Ziele zu verweisen, je nachdem, wie Sie darauf zugreifen.
Beispiel:-
/outer/
middle/
inner/
inner --> ./middle/inner/
Nun /outer/middle/inner/..
führt zu /outer/middle/
, aber wenn ich über den symbolischen Link darauf zugreife, /outer/inner/..
führt zu /outer/
. Es scheint, dass es hier zwei verschiedene ..
gibt.
Was ist ..
genau symbolischer Link? fester Link? Oder wird es je nach Pfad dynamisch generiert, wenn auf das Verzeichnis zugegriffen wird? Oder vielleicht ist mein Verständnis von symbolischen Verknüpfungen falsch.
Bearbeiten:
Andere verwandte Beobachtung
/outer/
middle/
file
inner/
f --> ./../file
inner --> ./middle/inner/
Nun, wenn ich versuche, auf die Datei zuzugreifen /outer/inner/f
, funktioniert es. Aber es sollte nicht da /outer/inner/../file
nicht auf eine Datei zeigen. Die Datei ist in /outer/middle/inner/..
. Dies scheint dem obigen Verhalten zu widersprechen !?
quelle
Antworten:
..
ist ein fester Link zum übergeordneten Verzeichnis, das als Teil des Verzeichniseintrags erstellt wird.Wenn Sie
ls -ail
in jedem dieser Verzeichnisse Probleme verursachen, sollten Sie feststellen, dass die folgenden Einträge alle die gleicheinode
Anzahl (erstes Feld) und die gleiche Anzahl fester Verknüpfungen (drittes Feld) aufweisen:..
bei der Ausführungls -ail
ininner
.
bei der Ausführungls -ail
inmiddle
middle
bei der Ausführungls -ail
inouter
Es gibt einen
..
Eintrag ininner
. Wenn Ihr aktuelles Arbeitsverzeichnis istouter
, sollten Sie die gleichen Ergebnisse (eine Verzeichnisliste vonmiddle
) aus sehenls -al inner/..
ls -al middle/inner/..
Die einzige Situation , in der „Zugriff“
..
durch die symbolische Verbindung sollte ein anderes Verhalten liefern, wenn Siecd
ininner
den symbolischen Link verwenden, so dass Ihre logische Arbeitsverzeichnis (pwd -L
) unterscheidet sich von Ihrem physischen Arbeitsverzeichnis (pwd -P
). In diesem Fallcd ..
werden Sie zurücknehmenouter
nicht , weil es ein anderer ist..
Eintrag, sondern weil Ihre Schale ist der Überblick über Ihr halten logisches Arbeitsverzeichnis und Sie aus einer Ebene knallend, anstatt Referenzierung den tatsächlichen..
Eintrags ininner
.Dies ist eine Annehmlichkeit, die beispielsweise
bash
im Rahmen des eingebautencd
Befehls bereitgestellt wird . Sie können dies überschreiben, indem Sie ihn auffordern, zum aktuellen..
Eintrag mit zu wechselnwhere
-P
weistcd
(wiepwd
oben) an, den physischen Pfad zu verwenden.quelle
cd
, um zu überprüfen. Korrigieren Sie mich also, wenn ich falsch liege, und zeigen Sie..
immer auf den physischen Elternteil. Wenn ein Symlink verwendet..
wird, wird er an den tatsächlichen (physischen) Elternteil weitergeleitet. Die Verwirrung besteht nur darin,cd
in Verzeichnisse zu gelangen.ls -lai
zeigt Ihnen, dass/..
es sich um das Stammverzeichnis selbst handelt (auch bekannt als/.
oder/
). Sofern das Dateisystem nicht kaputt ist, sollte es keinen anderen Fall geben, in dem. == ..
; selbst wenn eine fs irgendwo gemountet ist, wird sie..
vom (temporären) übergeordneten Element korrekt angezeigt (es ist..
also nicht nur ein einfacher statischer Eintrag in der Dateisystemtabelle erforderlich).