当我输入这样的内容时:
$ complete -p | grep -ie '\<man\>'
或:
$ find /etc/bash_completion.d/ -iname '*man*'
或:
$ grep -rie '\<man\>' /etc/bash_completion.d/
我找不到complete
命令man
函数的任何痕迹!
目标是为我自己的一个函数添加此完成:
complete -F <the_man_complete_function> <my_man_related_command>
有什么想法吗?
答案 0 :(得分:3)
我不能给你完整的解决方案,但我在我的系统上找到了以下内容
如果我运行一个新shell并输入:
> complete -p man
bash: complete: man: no completion specification
如果我尝试使用以下命令自动完成man命令:
> man [tab][tab]
Display all 16625 possibilities? (y or n)
CTRL-C
现在:
> complete -p man
complete -F _man man
为什么现在?没有答案,但现在我可以得到:
> complete -p | grep _man
complete -F _man man
complete -F _man apropos
complete -F _man whatis
我希望这会有所帮助。它首先使用它之后才起作用,这是一个很神秘的事。别人有想法吗?
答案 1 :(得分:0)
我认为你在询问手册页的位置是'完整'命令。如果是这样,complete是bash的一部分(如果你使用的是bash),那么只需输入'man bash'。
答案 2 :(得分:0)
我找到了一个解决方案:要加载尚未加载的完成功能,我只需在.bashrc
中启动它:
. /usr/share/bash-completion/completions/man
帮助我的有用链接:
修改强>
为避免在每次bash会话启动时加载man completion脚本,更好的解决方案是编写本地完成脚本,放入目录$XDG_DATA_HOME/bash-completion/completions
(通常为~/.local/share/bash-completion/completions
),名称为所需的命令(如bash-completion FAQ中所述)。
这是我在脚本中添加的代码(名为myman
):
#!/bin/bash
# Force the load of the man completion function if it is not loaded yet:
type -t _man >/dev/null || . /usr/share/bash-completion/completions/man
complete -F _man myman
使用此方法,仅在需要时(man
或myman
)加载人员完成功能。
答案 3 :(得分:0)
还可以使用例如Bash函数文档找到
help complete