简体版  |  繁体版   推荐信息: 阅读排行 | 滚动 | 微软SOA高峰会 | 中型企业创新社区 | 随心所欲发新闻
企业软件

提高Linux系统命令行的工作效率

出处:中国IT实验室 作者:dayi 2008-01-28 16:31 评论
字体大小: | |
在 linux 操作系统中,即使在X Window下,系统管理员经常也要与命令行打交道,使用键盘次数要明显高于鼠标,本文通过介绍合理地定制与修改 INPUTRC环境变量,以及利用bash 2.05以上版本中增加的complete命令,可以更好地提高linux命令行使用的工作效率,减少键盘的敲打以及拼写错误。
  虽然最近几年个人计算机的潮流已经从命令行方式转向图形界面方式,大量的采用鼠标操作,但是shell 在Linux中依然有很强的生命力。 shell有好几种,主要有bash、ksh、tcsh、zsh、ash,用得最多的是bash,它几乎是各种linux发布版的标准配置。同时在 linux 操作系统中,即使在X Window下,系统管理员经常也要与命令行打交道,使用键盘次数要明显高于鼠标,本文通过介绍合理地定制与修改 INPUTRC环境变量,以及利用bash 2.05以上版本中增加的complete命令,可以更好地提高linux命令行使用的工作效率,减少键盘的敲打以及拼写错误。
 
  一。定制/etc/inputrc文件
 
  通过设置INPUTRC环境变量(参见/etc/profile文件),其作用主要定义或者改变一些功能键的定义,从而更好地使用命令行,通常情况下 INPUTRC环境变量指向 /etc/inputrc文件,只要编辑/etc/inputrc文件,以及利用Tab键的命令补全功能,就可以实现类似于 MSDOS的DOSKEY的功能。
 
  以Redhat 7.3为例来说明,使用的bash shell版本号为2.0.5.你可以根据自己的需要定制与修改此文件,如想了解更多的内容,可以参阅man bash文档。
 
  例子,/etc/inputrc文件内容如下:
 
  
 set bell-style none

    set meta-flag on

    set input-meta on

    set convert-meta off

    set output-meta on

    set show-all-if-ambiguous On

    "e[1~": beginning-of-line # home

    "e[2~": insert-last-argument # insert

    "e[3~": delete-char # delete

    "e[4~": end-of-line # end

    "e[5~": backward-kill-word # page up

    "e[6~": kill-word # page down

    # (F1 .. F5) are "e[[A" ... "e[[E"

    "e[18~": history-search-forward # F7

    "e[19~": history-search-backward # F8


  具体修改说明如下(注以下[]中的内容为所按的键):
 
  set bell-style none
 
  关闭计算机小喇叭发出的声音。
 
  set meta-flag on
 
  set input-meta on
 
  set convert-meta off
 
  set output-meta on
 
  这几行主要是实现命令行上实现汉字的输入以及显示。 比如想输入汉字的文件名等等。
 
  set show-all-if-ambiguous On
 
  这一行主要是使命令补全的功能更好的发挥。许多Linux初学者并不知道这个功能,就是使用[Tab]键,能够减少键盘的敲打以及拼写错误。比如当前你想执行ifconfig命名,你输入if后按[Tab]键两次,就会出现所有以if开头的命令,文件名和目录名也可以使用这个方法输入,当打开上述命令后可以使用[Tab]键,仅仅需要按一次,这样更加方便与快捷。
 
  

    "e[1~": beginning-of-line # home

      "e[2~": insert-last-argument # insert

      "e[3~": delete-char # delete

      "e[4~": end-of-line # end

      "e[5~": backward-kill-word # page up

      "e[6~": kill-word # page down

 
  这几行主要是使命令行编辑方便,[home]、[delete]、[end]键保持原意,意指移动到命令行的开始、删除一个字符、移动到命令行尾。[insert] 键被定义为插入上一个命令的最后一个参数。比如执行如下命令:
 
  

$ mount /mnt/cdrom

$ cd[space][insert] 

# 相当于 执行 cd /mnt/cdrom

 
  可以试着按[insert]键几次看看会有什么出现内容?
 
  [Pageup]和[PageDown]键定义为向前和向后删除单词。
 
  

"e[18~": history-search-forward # F7

"e[19~": history-search-backward # F8

 
  [F7]和[F8]定义为命令历史查找功能,有点向MSDOS的DOSKEY功能类似,比如前面使用过mount命令,再次输入mount后按[F8]会调出先前使用的命令,特别是当命令非常长参数非常多的时候。
 
  二。安装bash-completion
 
  如果经常你使用[tab]键命令补全功能,就会发现它的不足之处,你可以发现它不能根据具体的需要或者命令补全所需要的参数与文件或者目录。例如你执行cd [tab],系统会将文件与目录一起显示出来,而实际上这时你仅仅需要显示文件类型为目录。bash从2.05版开始,已经加入命令 complete内部命令,从而能够使用复杂的命令行接口,通过一个复杂的脚本bash_completion实现可编程的补全程序,减少系统管理员日常维护工作,减少差错提高工作效率。
 
  具体操作如下:
 
  1. 下载最新的bash-completiton脚本,检查bash的版本号「执行bash ——version」,如果版本低于2.0.5最好升级bash.
 
  www.caliban.org/files/bash/bash-completion-latest.tar.gz
 
  www.caliban.org/files/redhat/RPMS/i386/bash-2.05-51.i386.rpm
 
  2. 安装
 
  # rpm -Uvh bash-2.05-12.i386.rpm
 
  # tar xzvf bash-completion-latest.tar.gz -C /tmp
 
  3. 仔细阅读bash_completetion目录下的README文件,修改/etc/bashrc文件,在行尾加入如下命令:
 
  

bash=${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.}

if [ "$PS1" ] && [ $bmajor -eq 2 ] && [ $bminor '>' 04 ] 

&& [ -f /etc/bash_completion ]; then # interactive shell

# Source completion code

. /etc/bash_completion

fi

unset bash bmajor bminor

4. 拷贝bash_completion文件:
 
  # cp /tmp/bash_completion/bash_completion /etc
 
  注销再重新进入后,你就会发现许多命令在使用命令补全时都会发生一些变化。
 
  通过以上的修改,你会发现在命令行上使用linux,同样高效与快捷,减少了许多不必要的错误。

  • 本文关键字:
  • 操作系统(8638)
  • 应用(2162)
  • Linux(2910)
  • 网友关注
    热门产品
    编辑推荐
    推荐专题
    更多
    思科
  • 打开网络创新之门
  • 思科公司于北京嘉里中心饭店成功举办了主题为“创新网络,绿色引擎”的思科创新日暨思科新品发布会。
  • 论坛热贴
    更多
    博客精选
    更多
    视频推荐
    更多
  • 杜青松:对IT人员要求别具一格
  • 在对杜青松的采访中,他透露出目前在中粮包装有限公司信息化建设的工作中的一个难点——IT人力资源短缺。
  • TMG

    Copyright (C) 1999-2008 Chinabyte.com, All Rights Reserved 版权所有 天极网络

    渝ICP证B2-20030003号 商务联系、网站内容、合作建议:010-82657868

    版权声明 在线提交意见反馈 Powered by 天极内容管理平台CMS4i

    经营性网站备案信息 网警备案 中国网站排名