Beispiele für Optionen für bash cd, zB: cd -Pe@ $directory

Beispiele für Optionen für bash cd, zB: cd -Pe@ $directory

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.

  1. Was ist ein Beispiel dafür, wann cd -Pgegenüber vorzuziehen wäre cd?
  2. Worin besteht cd -Lder Unterschied zum Standard cd?
  3. Wie kann es sein, dass das Arbeitsverzeichnis nicht erfolgreich ermittelt werden konnte?
  4. Was ist ein Beispiel für die Verwendung -@?

Antwort1

DerBash-Handbuchgibt ein paar mehr Details.

  1. cd -Pstellt 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 -Pbedeutet, dass der symbolische Link von bnach a/bdereferenziert 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.

  2. cd -Lentspricht der Standardeinstellung cd.

  3. 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
    
  4. 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 braucht O_XATTR).

verwandte Informationen