当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 让alias命令在bash下支持补全.....(转自己的帖子)
帖子发表于 : 2009-10-08 21:01 
头像

注册: 2009-03-05 16:31
帖子: 2794
送出感谢: 0 次
接收感谢: 11
一直都羡慕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中加入以下内容...
代码:
代码:
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


以上是根据/etc/bash_completion写的,如果你有别的需要补全的alias,只需要查看相应命令在其中的规则写法就是了,目前我需要的就是上面的安装的和全部的软件包名....


_________________
http://adam8157.info/


最后由 adam8157 编辑于 2009-10-10 23:09,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 让alias命令在bash下支持补全.....(转自己的帖子)
帖子发表于 : 2009-10-08 21:04 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
:em11 :em11 :em11


complete -F _show_all $default aw ai as
complete -F _show_installed $default ap ar


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 让alias命令在bash下支持补全.....(转自己的帖子)
帖子发表于 : 2009-10-08 21:05 
头像

注册: 2009-03-05 16:31
帖子: 2794
送出感谢: 0 次
接收感谢: 11
eexpress 写道:
:em11 :em11 :em11

谢谢 嘿嘿....


_________________
http://adam8157.info/


最后由 adam8157 编辑于 2009-10-09 19:54,总共编辑了 1 次

页首
 用户资料  
 
4 楼 
 文章标题 : Re: 让alias命令在bash下支持补全.....(转自己的帖子)
帖子发表于 : 2009-10-09 9:00 
头像

注册: 2007-12-25 12:51
帖子: 231
送出感谢: 0 次
接收感谢: 0 次
加个 arch 版的服务控制脚本(并不依赖 bash-completion):
代码:
sc()
{
   sudo /etc/rc.d/$1 $2
}
_sc()
{
   COMPREPLY=()
   cur=${COMP_WORDS[COMP_CWORD]}
   prev=${COMP_WORDS[COMP_CWORD-1]}

   srvd=/etc/rc.d; daemons=/var/run/daemons
   case $COMP_CWORD in
      1)
         COMPREPLY=( $(compgen -W "$(
            cd $srvd
            for f in *; do [ -f $f ] && echo $f; done
         )" -- $cur) )
         ;;
      2)
         w="start restart"
         test -f $daemons/$prev && w="stop restart"
         COMPREPLY=( $(compgen -W "$w" -- $cur) )
         ;;
      *)
         ;;
   esac
}
complete -F _sc sc


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译