Ich habe in meinem Terminal gearbeitet, als ich cd
falsch geschrieben habe zum Rooten (/
). Aus Versehen habe ich //
eingegeben und ich kam ins Terminal:
[email protected]://#
Wenn ich pwd
eingebe , bekomme ich die Antwort //
aber wenn ich ls -s
eingebe Ich habe dieselbe Liste wie in /
Verzeichnis.
Wenn Sie mehr als 2 eingeben, d. h. ///
Sie erhalten:
[email protected]:/#
Immer 1 /
außer 2. Gibt es einen Unterschied und was ist //
für?
Beste Antwort
/
entspricht //
Aus der POSIX-Spezifikation (Hervorhebung hinzugefügt):
3.267 Pfadname
Eine Zeichenfolge, die zum Identifizieren einer Datei verwendet wird. Im Kontext von
POSIX.1-2008 kann ein Pfadname auf {PATH_MAX} Bytes beschränkt sein, einschließlich
des abschließenden Nullbytes. Es hat einen optionalen Anfang <slash>
Zeichen, gefolgt von null oder mehr Dateinamen, getrennt durch <slash>
Figuren. Ein Pfadname kann optional einen oder mehrere nachgestellte <slash>
enthalten Figuren. Mehrere aufeinanderfolgende <slash>
Zeichen gelten
als identisch mit einem <slash>
, außer im Fall von
genau zwei führenden <slash>
Zeichen.
Und:
4.12 Auflösung von Pfadnamen
…
Ein Pfadname, der aus einem einzelnen <slash>
besteht soll in das Stammverzeichnis
des Prozesses aufgelöst werden. Ein Null-Pfadname darf nicht erfolgreich
aufgelöst werden. Wenn ein Pfadname mit zwei aufeinanderfolgenden <slash>
beginnt Zeichen,
die erste Komponente nach dem führenden <slash>
Zeichen können
implementierungsdefiniert interpretiert werden, obwohl mehr als
zwei führende <slash>
Zeichen werden als einzelner <slash>
behandelt Charakter.
Für eine nette Diskussion über Ausnahmen (Cygwin und Verzeichnisse) siehe:Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?