如何为函数启用 bash 自动完成?

Bel*_*lun 7 ssh bash autocomplete

我已经阅读了有关 bash 自动完成教程 bash 完成简介,我正在尝试为ssh我的一个函数(从 加载.profile)获得相同的自动完成;它几乎充当别名

我想要做的是:获得相同的自动完成,这是默认提供的ssh(这是功能_known_hosts;做complete -p | grep ssh,你会得到complete -F _known_hosts /etc/init.d/ssh),并为我自己的功能获取它(安装就像你会安装别名,并且实际上使用原始参数执行 ascp和a ssh

Eta*_*ner 7

这里的补全函数ssh_ssh.

您可以看到它complete -p ssh(它也应该在您的输出中),尽管它似乎是自动加载的,因此直到您在该会话中使用过它一次之后grep才会显示。

_ssh不管怎样,话虽这么说,我认为你也应该能够连接到你的函数。

complete -F _ssh myfunc
Run Code Online (Sandbox Code Playgroud)

  • 所以,现在我的函数(称为“connect”)有一个附加的自动完成函数(_ssh),但除非我为 ssh 执行自动完成,否则它不起作用。这个加载机制是如何工作的?以及如何“订阅”它?我们尝试从文件“/usr/share/bash-completion/completions/connect”创建一个指向 /usr/share/bash-completion/completions/ssh 文件(包含 _ssh 函数)的链接;_ssh 仍然没有找到。 (2认同)
  • 最终,我的朋友明白了:添加了文件 /usr/share/bash-completion/completions/connect 。/usr/share/bash-completion/completions/ssh 完成 -F _ssh 连接 (2认同)