如何定义函数名 "pattern" 的补全?
How to define completion for function name "pattern"?
我有几个函数只与目录一起工作,所有函数名称都遵循这种模式(以 _dir 结尾):
something_dir () { ... }
something_else_dir() { ... }
...
对于所有这些,我将完成定义为:
complete -A directory something_dir something_else_dir ...
是否可以自动定义所有函数的完成,以便每个以 _dir 结尾的新函数只完成目录?
使用compgen -A function
列出所有函数;然后 grep -E '.*_dir$'
过滤掉以 _dir
.
结尾的函数
complete -A directory $(compgen -A function | grep -E '.*dir$')
这假定所有以 _dir
结尾的函数名称都没有特殊符号,如 *
和空格。根据,应该一直都是这样。
此命令只会为已经存在的函数设置完成。要为您将在交互式会话中定义的函数自动添加补全,请将命令添加到 PROMPT_COMMAND
以便在每次提示时执行。
PROMPT_COMMAND="complete -A directory $(compgen -A function | grep -E '.*dir$')"
我有几个函数只与目录一起工作,所有函数名称都遵循这种模式(以 _dir 结尾):
something_dir () { ... }
something_else_dir() { ... }
...
对于所有这些,我将完成定义为:
complete -A directory something_dir something_else_dir ...
是否可以自动定义所有函数的完成,以便每个以 _dir 结尾的新函数只完成目录?
使用compgen -A function
列出所有函数;然后 grep -E '.*_dir$'
过滤掉以 _dir
.
complete -A directory $(compgen -A function | grep -E '.*dir$')
这假定所有以 _dir
结尾的函数名称都没有特殊符号,如 *
和空格。根据
此命令只会为已经存在的函数设置完成。要为您将在交互式会话中定义的函数自动添加补全,请将命令添加到 PROMPT_COMMAND
以便在每次提示时执行。
PROMPT_COMMAND="complete -A directory $(compgen -A function | grep -E '.*dir$')"