制表符补全对某些命令的文件参数不起作用

制表符补全对某些命令的文件参数不起作用

我有一个包含磁盘映像的目录,我们将其称为“image.dd”。实际上,这是一个更长的名称,因此希望通过键入第一个字符并按 Tab 键获取其余部分来完成名称。目录中只有几个文件,每个文件都以一个唯一的字母开头。

如果我输入ls i<TAB>命令,则正确完成ls image.dd

但如果我输入,fdisk -l i<TAB>什么也不会发生。这真的很烦人。我觉得 Tab 补全功能正在窥探我的命令,看到“fdisk”部分,然后说:“哦,你不能 fdisk 一个普通文件,所以我将忽略你自动完成文件的请求,即使它实际上在那里。”

当然,当我手动输入名称时,它起作用了,我当文件是磁盘映像时,使用 fdisk 命令来执行文件操作,那么如何才能使制表符补全正常工作呢?

使用Ubuntu 16.04,bash版本是4.3.42。

答案1

fdisk 的完整规则存储在文件中/usr/share/bash-completion/completions/fdisk。那里的规则定义它将扩展到块设备。要在当前环境中覆盖此设置 - 您可以执行以下操作:

complete -F _filedir_xspec fdisk

您可以将其添加到您的.bashrc文件中。

相关内容