LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 750|回复: 3

让alias命令在bash下支持补全.....

[复制链接]
发表于 2009-10-8 21:03:23 | 显示全部楼层 |阅读模式
一直都羡慕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中加入以下内容...
  1. alias ai='sudo apt-get install'
  2. alias ap='sudo apt-get purge'
  3. alias aw='apt-cache show'
  4. _show_installed()
  5. {
  6.         local cur
  7.         COMPREPLY=()
  8.         cur=`_get_cword`
  9.         COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
  10.         return 0
  11. }
  12. _show_all()
  13. {
  14.         local cur
  15.         COMPREPLY=()
  16.         cur=`_get_cword`
  17.         COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
  18.         return 0
  19. }
  20. complete -F _show_all $default aw
  21. complete -F _show_all $default ai
  22. complete -F _show_installed $default ap
复制代码

以上是根据/etc/bash_completion写的,如果你有别的需要补全的alias,只需要查看相应命令在其中的规则写法就是了,目前我需要的就是上面的安装的和全部的软件包名....
发表于 2009-10-9 10:50:20 | 显示全部楼层
谷粒谷力,鼓励鼓励。
回复 支持 反对

使用道具 举报

发表于 2009-10-9 11:42:42 | 显示全部楼层
直接用zsh不就结了。
回复 支持 反对

使用道具 举报

发表于 2009-10-10 00:47:51 | 显示全部楼层
应该鼓励嘀!自己解决了问题嘛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表