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

Rob*_*olt 17 bash cd-command autocorrection

我有三个文件夹叫做ProjectA,ProjectBProjectC. 当我tab-completecdcd Project并按Enter,它选择ProjectC。我发现其他类似案例也是如此;它默认为词典顺序的最后一个(但这也可能是最近更改/添加的)。

这是预期的默认行为cd,还是我在这里不小心设置了一些东西?

我正在使用 bash 4.3 运行 OSX 10.10.3。

cha*_*aos 18

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

cdspell

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

我试过了,它总是更正给定参数中的路径cd。如果您的文件夹中有多种可能性,例如ProjectA,ProjectBProjectC,则默认为目录顺序中的最后一个。您可以通过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$
Run Code Online (Sandbox Code Playgroud)

要禁用该行为,请使用:

shopt -u cdspell
Run Code Online (Sandbox Code Playgroud)