Ejemplos de opciones para bash cd, por ejemplo: cd -Pe@ $directorio

Ejemplos de opciones para bash cd, por ejemplo: cd -Pe@ $directorio

En bash 4.4.12, help cddice:

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

Tengo dificultades para entender estas palabras y mi Google-fu no muestra nada.

  1. ¿Cuál es un ejemplo de cuándo cd -Pse preferiría cd?
  2. ¿En qué se cd -Ldiferencia del estándar cd?
  3. ¿Cómo es posible que no se haya podido determinar correctamente el directorio de trabajo?
  4. ¿Cuál es un ejemplo de uso -@?

Respuesta1

Elmanual de bashda un poco más de detalle.

  1. cd -Pgarantiza que terminará con un camino "real":

    $ cd /tmp
    $ mkdir -p a/b
    $ ln -s a/b b
    $ cd b
    $ pwd
    /tmp/b
    $ cd -P ../b
    $ pwd
    /tmp/a/b
    

    Usar significa que se desreferencia -Pel enlace simbólico de ba . a/bLa interacción con ..es que ..normalmente se procesa eliminando el componente de ruta anterior, si lo hay; no comprobando la ruta en el disco. Si utiliza muchos enlaces simbólicos, esto puede resultar muy confuso.

  2. cd -Les equivalente al valor predeterminado cd.

  3. El directorio de trabajo actual no se puede determinar si se ha eliminado:

    $ 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. No estoy seguro de esto (me imagino cómo se vería, pero Bash simplemente dice " cd:: -@opción no válida"; tengo la impresión de que actualmente solo está disponible en Solaris, necesita O_XATTR).

información relacionada