当我创建一个用一些糖包裹现有命令的命令时,我希望新命令支持原始命令的自动完成。有没有办法告诉Bash重用另一个命令的自动完成脚本?
愚蠢的例子:
cat > ~/ls-on-steroids.sh <<EOF
echo "Here are some goodies!"
ls "$@"
EOF
chmod +x ~/ls-on-steroids.sh
现在,我如何配置新脚本,以便在键入时:
~/ls-on-steroids.sh <TAB><TAB>
我想要与以下行为相同的行为:
ls <TAB><TAB>
优选地,以便携式,可重复的方式,而不必手动跟踪ls
自动完成脚本的位置。
您必须手动配置它,但是从现有命令复制完成内容相对简单。首先,运行complete -p ls
以查看为定义了什么命令ls
。如果什么都没有发生,请ls
不要使用任何特殊的补全。不过,您可能希望看到类似以下内容的输出
complete -o default -F _longopt ls
表示该函数_ls
被调用以生成命令的补全ls
,如果不生成任何结果,请使用bash
默认补全。您可以ls_on_steroids
通过简单地运行将相同的功能应用于
complete -o default -F _longopt ls_on_steroids
(即,将替换为,将ls
其ls_on_steroids
作为最终参数complete -p
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句