
Darin heißt es bash 4.4.12
:help cd
Options: -L force symbolic links to be followed: resolve symbolic links in DIR after processing instances of `..' -P use the physical directory structure without following symbolic links: resolve symbolic links in DIR before processing instances of `..' -e if the -P option is supplied, and the current working directory cannot be determined successfully, exit with a non-zero status -@ on systems that support it, present a file with extended attributes as a directory containing the file attributes
Ich habe Schwierigkeiten, diese Worte zu begreifen, und mein Google-Fu bringt nichts zustande.
- Was ist ein Beispiel dafür, wann
cd -P
gegenüber vorzuziehen wärecd
? - Worin besteht
cd -L
der Unterschied zum Standardcd
? - Wie kann es sein, dass das Arbeitsverzeichnis nicht erfolgreich ermittelt werden konnte?
- Was ist ein Beispiel für die Verwendung
-@
?
Antwort1
DerBash-Handbuchgibt ein paar mehr Details.
cd -P
stellt sicher, dass Sie einen „echten“ Pfad erhalten:$ cd /tmp $ mkdir -p a/b $ ln -s a/b b $ cd b $ pwd /tmp/b $ cd -P ../b $ pwd /tmp/a/b
Die Verwendung von
-P
bedeutet, dass der symbolische Link vonb
nacha/b
dereferenziert wird. Die Interaktion mit..
erfolgt..
normalerweise durch Entfernen der vorherigen Pfadkomponente (sofern vorhanden); nicht durch Überprüfen des Pfads auf der Festplatte. Wenn Sie viele symbolische Links verwenden, kann dies sehr verwirrend sein.cd -L
entspricht der Standardeinstellungcd
.Das aktuelle Arbeitsverzeichnis kann nicht ermittelt werden, wenn es gelöscht wurde:
$ cd /tmp $ mkdir -p c/d $ cd c/d $ rmdir ../d ../../c $ cd ..; echo $? cd: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory 0
V.
$ cd -Pe ..; echo $? cd: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory 1
Da bin ich mir nicht sicher (ich kann mir vorstellen, wie es aussehen würde, aber Bash sagt nur „
cd
:-@
: ungültige Option“; ich habe den Eindruck, dass dies derzeit nur unter Solaris verfügbar ist, es brauchtO_XATTR
).