如何让 bash 自动完成来模仿某个命令的行为?

如何让 bash 自动完成来模仿某个命令的行为?

我正在编写一个包含某个 Linux 命令的脚本。现在,当我直接在命令行上使用该命令时,该命令具有一些自动完成行为。例如,如果我输入命令名称,然后输入空格,然后输入字符串并按 Tab 键 - 它会补全为路径上可执行文件的名称。但是,包装脚本确实不是似乎有这种行为。如何让 bash 对我的包装器使用与原始命令相同的自动完成功能?

为了使事情更具体:命令是which.我正在编写一个调用它的包装器,如果它没有失败,则readlink -fwhich.我希望自动完成功能来查找路径上的可执行文件,就像which.

答案1

which您可以列出with 的完成规范

complete -p which

结果是complete -c which。因此,如果您mywhich在 PATH 中有自己的新命令(可执行文件),那么您可以通过配置 bash 以相同的方式完成它

complete -c mywhich

你可以把这一行放入~/.bash_completion

相关内容