Unix-bash cd命令然后tab显示目录和文件

Unix-bash cd command and then tab shows both directories and files

在 unix bash shell 中,当我输入 cd 然后按 Tab 键时,它会列出目录和文件作为可供选择的可用选项。显示目录和可能的目录链接必须直观。列出文件不会违反直觉吗?

比如./然后tab只列出有执行权限的项,很聪明。

为什么 bash 没有与 cd 命令相同的智能?这是一个错误吗?

在这两种情况下,您都获得了文件名补全。 bash 具有足够的内置智能来识别命令名称必须具有可执行权限,因此它将 ./ + Tab 限制为可执行文件。完成 argumentscd 属于 programmable 完成的范围(因为尽管不明智,但有可能隐藏一个已构建的-in 命令带有完全不同的命令,不一定将目录作为参数)。

bash 的可编程完成工具非常好,但无论出于何种原因,它实际上并没有在基本安装中包含任何此类完成。有个large set of completions available, though, including one for cd.

将以下命令添加到您的 bashrc:

complete -d cd  # or ``complete -A directory cd''

然后它只会为 cd 命令自动完成目录(包括到目录的符号链接)。

有关详细信息,请参阅 bash 手册中的 Programmable Completion Builtins