“男人”完整功能在哪里?

时间:2014-08-26 13:35:57

标签: bash tab-completion

当我输入这样的内容时:

$ 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>

有什么想法吗?

4 个答案:

答案 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

使用此方法,仅在需要时(manmyman)加载人员完成功能。

答案 3 :(得分:0)

还可以使用例如Bash函数文档找到 help complete