![如何让 bash 自动完成来模仿某个命令的行为?](https://linux22.com/image/228356/%E5%A6%82%E4%BD%95%E8%AE%A9%20bash%20%E8%87%AA%E5%8A%A8%E5%AE%8C%E6%88%90%E6%9D%A5%E6%A8%A1%E4%BB%BF%E6%9F%90%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%9A%84%E8%A1%8C%E4%B8%BA%EF%BC%9F.png)
我正在编写一个包含某个 Linux 命令的脚本。现在,当我直接在命令行上使用该命令时,该命令具有一些自动完成行为。例如,如果我输入命令名称,然后输入空格,然后输入字符串并按 Tab 键 - 它会补全为路径上可执行文件的名称。但是,包装脚本确实不是似乎有这种行为。如何让 bash 对我的包装器使用与原始命令相同的自动完成功能?
为了使事情更具体:命令是which
.我正在编写一个调用它的包装器,如果它没有失败,则readlink -f
在which
.我希望自动完成功能来查找路径上的可执行文件,就像which
.
答案1
which
您可以列出with 的完成规范
complete -p which
结果是complete -c which
。因此,如果您mywhich
在 PATH 中有自己的新命令(可执行文件),那么您可以通过配置 bash 以相同的方式完成它
complete -c mywhich
你可以把这一行放入~/.bash_completion