Verwendung von / bei Verwendung von CD

3744
LukasKawerau

Ich bin in meinem Home-Verzeichnis auf meinem Mac:

$ pwd /Users/lukas 

Wenn ich in der Nähe bin cd, kann ich den Pfad nicht (und kann nicht) mit /:

$ cd Documents/ /Users/lukas/Documents  $ cd /Documents -bash: cd: /Documents: No such file or directory 

Außer wenn ich in bin /:

$ pwd / $ cd Users /Users  $ cd /Users /Users 

Warum kann ich /vor dem Pfad verwenden, wenn von /, /Usersaber nicht in den nachfolgenden Ebenen? Ist dies spezifisch für macOS oder ist dieses standardmäßige Unix-Verhalten?

11
Ich denke, dass Fragen zu relativen und absoluten Pfaden gestellt wurden (https://stackoverflow.com/questions/46121000/what-is-an-absolute-pathname-vs-a-relative-pathname) [befofre] (https: //superuser.com/questions/153165/what-does-represent-while-giving-path) adamczi vor 5 Jahren 11
@adamczi Es ist ziemlich offensichtlich, dass OP nicht weiß, was ein relativer Pfad ist oder wie seine Syntax ist, also kann er es nicht nachschlagen. K. Gkinis vor 5 Jahren 6
@ K.Gkinis Dies ist kein Grund, nicht als Duplikat zu schließen. Es hilft den Fragestellern, gute Antworten zu erhalten (davon auszugehen, dass die Antworten gut sind) und den Antwortenden, weniger Versionen des gleichen Inhalts zu erhalten. user202729 vor 5 Jahren 11
@ K.Gkinis Und in gewissem Sinne ist dies ein großer Teil des Endpunkts des Duplikats: Die Menschen werden Fragen auf viele verschiedene Arten stellen, also gibt es viele Fragen (die auf diese Weise passen), die auf eine einzige Antwort verweisen Gute Sache. In solchen Fällen (in denen ein OP den Begriff nicht kennt, nach dem gesucht werden soll), ist das Schließen als Dupe keine Kritik an ihnen, sondern die beste Art und Weise, wie viele Fragen gestellt werden. TripeHound vor 5 Jahren 8
Im Allgemeinen verwenden wir ./, aber es ist überflüssig. wie wäre ~ / mckenzm vor 5 Jahren 0
@adamczi Sie wurden schon einmal gefragt (danke für die Links!), aber meine Frage und vor allem die großartigen Antworten, die hier gegeben werden, sind _way_ detaillierter und erklären das Konzept besser als die von Ihnen verlinkten Antworten. Ich weiß nicht, ob dies für das Schließen als Duplikat von Bedeutung ist, könnte aber eine Überlegung sein. LukasKawerau vor 5 Jahren 1
Ich verstehe vollkommen, dass es schwierig ist zu suchen, wenn Sie nicht wissen, wie der Begriff lautet, aber ich stehe immer noch dafür, "das könnte wirklich leicht gesucht werden" - [this] (https://www.google.com/search?). client = ubuntu & hs = XcU & channel = fs & ei = Pob2W4MUkbWwB57RntAI & q = linux + pfade + beginn + mit + slash & oq = linux + pfade + beginn + mit + slash) gibt [that] (https://askubuntu.com/questions/607413/when-to zurück -use-a-previous-slash-in-path-names-eg-for-the-cd-command) als erstes Ergebnis mit noch vollständigerer Antwort. adamczi vor 5 Jahren 0

2 Antworten auf die Frage

44
davidgo

Dies ist ein Standardverhalten von Unix.

Der /Pfad am Anfang des Pfads steht für den Stamm der Festplatte (oder für die Start- / oberste Ebene des Dateisystembaums). Da Documentses nicht von der Wurzel ist, /Documentskann nicht gefunden werden.

/Users ist aus dem Stammverzeichnis, daher tritt dieses Problem nicht auf.

Sie können cd /Users/lukas/Documentsdiesen Pfad verwenden.

Alternativ können Sie die relative Adressierung verwenden. Unix-basierte Dateisysteme haben zwei spezielle Verzeichnisse:

  • . was bedeutet "dieses Verzeichnis",
  • .. was das übergeordnete Verzeichnis bedeutet.

Wenn Sie in sind /Users/lukas, cd ./Documentswürde Sie an den richtigen Ort bringen.

Nehmen wir an, Sie waren dabei /Users/Lukas/Documentsund wollten gehen /Users/Janes/Documents, Sie könnten einen Befehl ausgeben cd ../../Janes/Documents- mit ..würde Sie ein Level zurückkehren - so würden Sie es zweimal tun, bevor Sie in den neuen relativen Pfad gehen.

Hinweis: Wie @davidgo in `Users / lukas` gesagt hat, fordert cd Documents den _relativen Pfad_ auf. "cd / Users / Lukas / Documents" ruft nach dem _absolute-Pfad_ (der in jedem Repertorium, in dem Sie diesen Befehl aufrufen, funktioniert). Shan-x vor 5 Jahren 1
Die Frage betrifft zwar einen Mac, bei dem es sich um ein Unix-System handelt, dies ist jedoch auch das Standardverhalten von MS-DOS / Windows (Ersetzen von "/" durch "\\"), da DOS es (durch eine lange, verschlungene Historie) von Unix entlehnt hat. FreeMan vor 5 Jahren 1
Abhängig von der verwendeten Shell würden auch cd $ HOME / Documents oder cd ~ / Documents funktionieren. Die Shell-Variable HOME (Zugriff mit $ HOME) ist der übliche Speicherort für Ihr Home-Verzeichnis (~ ist ein spezieller Alias ​​für $ HOME). pboss3010 vor 5 Jahren 2
12
Lightness Races in Orbit

/Users/lukasist ein "absoluter" Pfad. Das führende /Verzeichnis repräsentiert das Stammverzeichnis Ihres Dateisystems.

lukasist ein "relativer" Pfad. Da es nicht im Stammverzeichnis verankert ist, bedeutet dies "im aktuellen Verzeichnis nach diesem suchen ". Wenn das aktuelle Verzeichnis /Users(oder ein anderes Verzeichnis mit einem lukasdarin) nicht vorhanden ist, schlägt dies fehl.

Lassen Sie uns Ihre Beispiele untersuchen, vorausgesetzt, Sie sind dabei /Users/lukas:

$ cd Documents/ /Users/lukas/Documents 

Relativer Pfad angegeben => Wechseln Sie in das Verzeichnis "Documents" /Users/lukas.

$ cd /Documents -bash: cd: /Documents: No such file or directory 

Absoluter Pfad angegeben => Wechseln Sie in das Verzeichnis /Documents.

$ pwd / 

Dies zeigt, dass Sie jetzt das Arbeitsverzeichnis in das Stammverzeichnis geändert haben /(obwohl der cdBefehl dazu nicht angezeigt wurde).

$ cd Users /Users 

Relativer Pfad angegeben => Wechseln Sie in das Verzeichnis "Users", das sich darin befindet /.

$ cd /Users /Users 

Absoluter Pfad angegeben => Wechseln Sie in das Verzeichnis /Users.

Der Schlüssel ist jedes Mal das führende /. Damit ist der Weg absolut. Ohne sie ist der Pfad relativ. Diese Regel ist eindeutig, da alle absoluten Pfade mit /(da das Stammverzeichnis immer aufgerufen wird /) beginnen.

Hier ist ein Pseudocode, der diesen Algorithmus lose beschreibt:

MakePathAbsolute(path): if <path> starts with '/' return <path> else return <current directory>/<path> 

Das Argument, an das Sie übergeben, cddurchläuft diesen Algorithmus. Das Verzeichnis, in das Sie wechseln, ist der Pfad, den der Algorithmus zurückgibt.


Lesen Sie weiter:

Dies ist auch ein guter Durchgang und hilft wirklich, dieses Verhalten zu verstehen. Vielen Dank! :) LukasKawerau vor 5 Jahren 0