让alias命令在bash下支持补全.....(转自己的帖子)
发表于 : 2009-10-08 21:01
一直都羡慕zsh的complete_aliases功能...
例如
ai='sudo apt-get install'
ap='sudo apt-get purge'
aw='apt-cache show'
输入ai或者aw, 然后按TAB键就可以补全软件包的名字
输入aw, 然后按TAB键就可以补全已经安装的软件包的名字
可惜bash没有,bash_completion也没有....只好自己写规则了,好在只有十几行...
在./.bashrc中加入以下内容...
代码:
以上是根据/etc/bash_completion写的,如果你有别的需要补全的alias,只需要查看相应命令在其中的规则写法就是了,目前我需要的就是上面的安装的和全部的软件包名....
例如
ai='sudo apt-get install'
ap='sudo apt-get purge'
aw='apt-cache show'
输入ai或者aw, 然后按TAB键就可以补全软件包的名字
输入aw, 然后按TAB键就可以补全已经安装的软件包的名字
可惜bash没有,bash_completion也没有....只好自己写规则了,好在只有十几行...
在./.bashrc中加入以下内容...
代码:
代码: 全选
alias ai='sudo apt-get install'
alias ap='sudo apt-get purge'
alias aw='apt-cache show'
_show_installed()
{
local cur
COMPREPLY=()
cur=`_get_cword`
COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
return 0
}
_show_all()
{
local cur
COMPREPLY=()
cur=`_get_cword`
COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
return 0
}
complete -F _show_all $default aw
complete -F _show_all $default ai
complete -F _show_installed $default ap