Was ist der Unterschied zwischen "cd ../" und "cd / .."?

7

Was bedeuten diese beiden Befehle?

cd ../
cd /..

Ich lande in zwei Verzeichnissen nach oben den Baum beim ersten Befehl und im Stammverzeichnis vom zweiten Befehl. Warum passiert das?

Fazlan
quelle

Antworten:

12

Ein /am Ende des Namens eines Verzeichnisses / Ordners ist optional . In den meisten Fällen ändert das Einfügen oder Weglassen des endgültigen Schrägstrichs in einem Verzeichnisnamen nichts an der Wirkung eines Befehls.

Ist cd ../also gleichbedeutend mit cd ...

Pfade, die nicht beginnen mit einem /sind relative Pfade; Sie werden relativ zum aktuellen Verzeichnis aufgelöst .

Jedes Verzeichnis hat zwei spezielle Einträge:

  • Ein Verzeichniseintrag namens ., der in das Verzeichnis selbst aufgelöst wird
  • Ein Verzeichniseintrag namens .., der in das übergeordnete Verzeichnis des Verzeichnisses aufgelöst wird (dh das Verzeichnis, das dieses Verzeichnis enthält).

Deshalb cd ../und cd ..wechseln Sie in den übergeordneten des aktuellen Verzeichnisses . Wenn Sie also anfangen /home/fazlanund laufen cd ..oder cd ../landen, landen Sie in /home.

Im Gegensatz dazu /..ist ein absoluter Weg (wenn auch ein ungewöhnlicher). /ist das Stammsystem des Dateisystems - das Verzeichnis, in das Sie gelangen, wenn Sie die Verzeichnishierarchie vollständig durchlaufen. (Mit derselben übergeordneten und untergeordneten Metapher sagen wir, dass dies /der Vorfahr von allem im Dateisystem ist.)

Da .."das übergeordnete Verzeichnis dieses Verzeichnisses" und /"die Oberseite des Dateisystems" /..bedeutet , bedeutet dies "das übergeordnete Verzeichnis der Oberseite des Dateisystems".

Aber was bedeutet es, über das Verzeichnis zu sprechen, das enthält / ? Nun, /ist eine Ausnahme. Da es kein Verzeichnis enthält , sagen wir, dass /das übergeordnete Verzeichnis selbst ist. Daher ist in /, ..ist /. Folglich /..ist das gleiche wie /.

Aus diesem Grund cd ../rufen Sie ein Verzeichnis auf, von dem aus Sie begonnen haben, und gelangen cd /..ganz nach oben. Elegant und leicht Möglichkeiten , um diese Dinge zu tun , lesen cd ..und cd /, respectively.

Eliah Kagan
quelle
+1 für das Aufrufen relativer Pfade. Ich wünschte, ich hätte daran gedacht, das zu erwähnen.
Aaron
@ BryceAtNetwork23 Danke. Übrigens, wenn Sie möchten, können Sie Ihre Antwort auf jeden Fall bearbeiten, um Informationen hinzuzufügen, die Sie für vermisst halten.
Eliah Kagan
Hat meine Freundin dazu gebracht, das zu lesen ... jetzt bekommt sie es ... Danke!
Scott Goodgame
2

Der erste ist ein relativer Pfad. Der zweite ist ein absoluter Weg.

Der Operator .. in diesem Argument bedeutet, einen nach oben zu verschieben.

Der Schrägstrich, wenn er nicht vorne steht, bedeutet die Aufteilung des Unterverzeichnisnamens.

Der Schrägstrich vorne bedeutet "Dies ist ein absoluter Pfad. Beginnen Sie im Stammverzeichnis." Das .. wird verworfen, da Sie nicht weiter zurücktreten können. (Es gab eine Zeit, in der viele von diesen Ihnen erlaubten, Chroots zu brechen)

RobotHumans
quelle
1

Ein einzelner Punkt (.) Repräsentiert das aktuelle Verzeichnis. Wenn Sie ein cd .ausführen, werden Sie in Ihr aktuelles Verzeichnis verschoben (was anscheinend nichts bewirkt). Wenn Sie etwas von / dir1 in Ihr aktuelles Verzeichnis kopieren, können Sie dies folgendermaßen tun:

cp /dir1/somefile.txt .

Durch Ausführen von a gelangen cd ..Sie auf eine Verzeichnisebene. A cd ../macht das Gleiche. Wenn Sie zwei Ebenen höher gehen möchten, fügen Sie am Ende zwei weitere Punkte hinzu:

cd ../..

Um zum Stammverzeichnis zurückzukehren, können Sie a ausführen cd /. Angenommen, ich habe Folgendes ausgeführt:

cd /dir1/dir2/dir3/..

Das bringt mich in das Verzeichnis / dir1 / dir2, weil (wie wir oben festgestellt haben) das ..sagt, dass es eine Ebene höher gehen soll. Also geht es zu dir3 und dann hoch.

Wenn Sie a aufrufen cd /.., weisen Sie es an, in das Stammverzeichnis /und dann eine Ebene höher zu wechseln, was nicht möglich ist. Sie bleiben also effektiv im Stammverzeichnis.

Aaron
quelle