如何使用bash完成 – 即时定义的函数?
我尝试为别名添加完成:alias m =’man’.
所以,我在我的.bashrc中添加了完整的-F _man m. 问题是用于完成的函数_man不是在bash会话开始时定义的,而是在$man命令上执行第一个tab竞争时定义的. complete -F _man man complete -F _man apropos complete -F _man whatis 因此,当我尝试使用$m命令完成选项卡时,我可以得到: $m -bash: completing : function ? _man ? not found $m 我对函数_aptitude和_apt-get也有同样的问题 我想要的是,使用我的.bashrc在bash启动时强制创建函数_man,_aptitude,_apt-get. 我的bash版本是: 谢谢阅读. 编辑:事实上,类似的问题已经存在并得到了回答: 解决方法
你有.bashrc:
alias m='man' complete -F _man m 只需添加: _completion_loader man 然后你在$m的完成工作将很好,即使没有在$man上执行制表完成. _completion_loader可能未在您的发行版中定义.这是在Ubuntu 14.04的.bashrc中找到的代码的副本: _completion_loader () { local compfile=./completions; [[ $BASH_SOURCE == */* ]] && compfile="${BASH_SOURCE%/*}/completions"; compfile+="/${1##*/}"; [[ -f "$compfile" ]] && . "$compfile" &> /dev/null && return 124; complete -F _minimal "$1" && return 124 } 实际上,为了避免两次生成_man函数,您还应该更改该行完成-F _man m to完成-F _man man m. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |