cd的` - @`选项有什么作用?

时间:2014-06-14 15:44:03

标签: macos bash unix cd

所以,如果我man cd,我会获得bash builtins的联机帮助页。

如果我cd -?,我会收到以下信息:

cd -?
-bash: cd: -?: invalid option
cd: usage: cd [-L|[-P [-e]] [-@]] [dir]

我知道前两个选项是什么。然后我搜索了两个选项。

我的系统信息:

  • OS X 10.9 (小牛队)
  • bash 4.3.18 (与OS X的Homebrew程序包管理器一起安装)

但是,如果我运行which cd,我会获得/usr/bin/cd。 Homebrew不触及/usr/local之外的任何内容,所以我只能假设这是系统的cd

但我找不到该选项的文档!这让我发疯了。

有谁知道-@做了什么?

2 个答案:

答案 0 :(得分:2)

这是一个新选项(截至bash-4.3)。更改日志包含以下描述:

  

' CD'有一个新的` - @'用于浏览文件扩展属性的选项       支持O_XATTR的系统。

changelog

键入help <name>man bash以获取有关bash命令的更多信息。 (在bash手册页中,您可以通过键入cd后跟搜索字符串来搜索/,然后输入。n转到下一个匹配,转移+ n去向后)。

bash手册页包含以下内容:

  

在支持它的系统上, - @选项显示扩展名   与文件关联的属性作为目录。

答案 1 :(得分:0)

查看bash的手册页以获取解释。相关部分说:

  

如果dir以斜杠(/)开头,则不使用CDPATH。 -P选项使cd通过在遍历dir时和在dir中处理..的实例之前解析符号链接来使用物理目录结构(另请参阅set builtin命令的-P选项); -L选项强制符号链接,然后在处理dir中的..实例后解析链接。如果..出现在目录中,则通过从dir中删除前一个路径名组件,回到斜杠或dir的开头来处理它。如果-e选项随-P提供,并且在目录更改成功后无法成功确定当前工作目录,则cd将返回不成功的状态。在支持它的系统上, - @选项将与文件关联的扩展属性显示为目录。在尝试更改目录之前,将 - 的参数转换为$ OLDPWD。如果使用CDPATH中的非空目录名,或者 - 是第一个参数,并且目录更改成功,则新工作目录的绝对路径名将写入标准输出。