假设我有两个bash函数:
dock() { sudo docker $@ ;}
并且
dock-ip() { sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' $@ ;}
如何让bash自动补全与第二个函数一起工作?
对于第一个函数,只需添加以下内容即可:
_completion_loader docker; complete -F _docker dock
这对第二个命令无效。Docker的自动补全源位于Debian Stretch上的
/usr/share/bash-completion/completions/docker
中。我还有更多像dock-run
,dock-exec
等的功能,所以我不想为它们中的每一个编写自定义完成函数。此外,
complete -F _docker_container_inspect dock-ip
只部分起作用; tab仅列出容器,而不是完成部分字符串。
研究: 如何自动完成嵌套的多级子命令? <-- 需要自定义函数 https://superuser.com/questions/436314/how-can-i-get-bash-to-perform-tab-completion-for-my-aliases <-- 仅针对顶层命令自动化
_completion_loader docker;
这行代码加到你的第一个示例代码里,这样更懒人友好 :P - Andrzej Piszczek