我有一个包含磁盘映像的目录,我们将其称为“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
文件中。