bash cd 选项示例,例如: cd -Pe@ $directory

bash cd 选项示例,例如: cd -Pe@ $directory

在 中bash 4.4.12help 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

我很难理解这些词,而且我的谷歌搜索引擎也找不到任何东西。

  1. cd -P什么时候会优先于 的例子是什么cd
  2. cd -L与标准有何不同cd
  3. 怎么可能无法成功确定工作目录呢?
  4. 使用的例子是什么-@

答案1

bash手册给出了更多细节。

  1. cd -P确保你最终得到一条“真实”的路径:

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

    使用意味着从到 的-P符号链接被取消引用。与is 的交互通常通过删除前一个路径组件(如果有)来处理;不是通过检查磁盘上的路径。如果您使用大量符号链接,这最终会变得非常混乱。ba/b....

  2. cd -L相当于默认的cd

  3. 无法确定当前工作目录是否已被删除:

    $ 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. 我对此不太确定(我可以想象它会是什么样子,但 Bash 只是说“ cd::-@无效选项”;我的印象是这目前仅在 Solaris 上可用,它需要O_XATTR)。

相关内容