当给定不完整的目录名称时 cd 自动选择是标准行为吗?

当给定不完整的目录名称时 cd 自动选择是标准行为吗?

我有三个名为ProjectAProjectB和的文件夹ProjectC。当我tab完成并按下cd时,它会选择。我发现其他类似的案例也是如此;它默认为字典顺序中的最后一个(但这也可能是最近更改/添加的)。cd ProjectEnterProjectC

这是预期的默认行为cd,还是我在这里意外设置了某些内容?

我运行的是 OSX 10.10.3,带有 bash 4.3。

答案1

我没有遇到这种行为。但我能够重现它。也许您不小心更改了选项cdspell。请参阅Bash 参考手册:

cd拼写

如果设置,将更正 cd 命令中目录组件的拼写小错误。检查的错误有字符调换、字符缺失和字符过多。如果发现更正,则打印更正的路径,然后继续执行命令。此选项仅由交互式 shell 使用。

我尝试过,它总是纠正给出的参数中的路径cd。如果存在多种可能性(例如在文件夹中带有ProjectAProjectBProjectC),则默认为目录顺序中的最后一个。您可以通过检查ls -U。参见示例:

user@host:~$ ls -Ul
total 0
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectA
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectB
drwxr-xr-x 2 root root 40 May 26 08:11 ProjectC
user@host:~$ cd Project<tab><tab>
ProjectA/ ProjectB/ ProjectC/
user@host:~$ cd Project
ProjectC
user@host:~/ProjectC$

要禁用该行为,请使用:

shopt -u cdspell

相关内容