您的位置:首页 > 运维架构 > Shell

linux bash shell常用技巧(1)

2013-06-23 20:13 549 查看
    由于自己平时使用Ubuntu作为开发环境,所以使用bash的机会就比较多一点儿,在此将使用bash过程中的一些比较有用的技巧记录在此,方便自己以后查询,希望也能帮到一些网友,更有效率的使用的bash.

1.快捷键

使用快捷键在很多时候可以显著提高自己操作的效率,而我个人平时比较多的使用快捷键(也只是使用了一小部分),所以先说一下快捷键。我个人使用的是gnome-terminal,默认设置是emacs模式,所以好多的快捷键应该是跟emacs相同的。同时,为了能够使用Alt开头的快捷键,我对gnome-terminal进行了如下设置:点击 编辑 -> 键盘快捷键, 把"启用菜单快捷键"前面的勾去掉.

先说一下我使用最多的快捷键(一些大家熟知的ctrl+c/ctrl+z等等,此处就不说了),最后罗列一下快捷键列表。
Ctrl+Alt+T:打开终端,不多说。
Ctrl+Shift+T:在当前路径下,打开另外一个terminal标签(相当于clone了一个当前terminal标签)。非常适合需要打开另外一个终端,并跳转到当前处理的路径的情况。
Ctrl+R:逆向搜索历史命令。按下ctrl+R后,直接想要运行的之前的命令中包含的单词,如果不是你要的那一条,可以持续按下Ctrl+R直到找到需要的命令,同时也可以按下Ctrl+G来取消搜索。示例:(reverse-i-search)`ls':ls a b c
Alt+.:输入之前命令的最后一个参数。按下Alt+. 以后,会在当前光标位置补上上一条命令的最后一个参数,如果持续按Alt+.则会补全上条命令的最后一个参数、上上上条......。例如:

    $mkdir name-too-long-directory

    $cd  |

当光标在如上的|位置时,我们按下Alt+. 则会补全为cd name-too-long-directory
Ctrl+L:清屏命令。比clear命令更好用。即使当前光标处已经输入了命令,按下ctrl+L也可以完成清屏(输入的命令继续保留)
Ctrl+A/Ctrl+E:移动到行首、行尾。使用该命令可以将光标置于当前输入的命令的行首或者行尾。
Ctrl+F/Ctrl+B:光标向前、向后移动一个字符。(F/B分别为Forward/Backward)
Alt+F/Alt+B:光标向前、向后移动一个单词。
Ctrl+U/Ctrl+K:删除当前光标到行首/当前光标到行尾的字符。
Ctrl+W:删除一个单词,单词之间以空格分隔
Ctrl+Alt+H:删除一个单词,单词之间以符号分割,此处的符号是指除了字母和数字的其他符号。
Ctrl+Y:粘贴最后一次使用快捷键删除(例如ctrl+u或者ctrl+k等)的内容。

其他常用的快捷键列表如下:(其中开头的C代表Ctrl键,开头的M代表Alt键)

意义
快捷键
向前(Forward)移动一个字符
C-f
向后(Backward)移动一个字符
C-b
向前移动一个单词
M-f
向后移动一个单词
M-b
移动光标到行首
C-a
移动光标到行尾
C-e
 
 
向前删一个字符
C-d
向后删一个字符
C-h
向前删一个单词
M-d
向后删一个单词, 单词之间以符号分割
C-M-h
向后删一个单词, 单词之间以空格分割
C-w
清屏, 相当于命令clear, 有了这个快捷键, 就不用每次努力的敲clear了
C-l
删除当前光标到行尾的字符
C-k
删除当前光标到行首的字符
C-u
粘贴删除环里面的第一项
C-y
粘贴删除环里面的后面的项
M-y
undo
C-/
取出上一条命令的最后一个参数
M-.
 
 
从当前光标处向前搜索字符
C-]
从当前光标处向后搜索字符
C-M-]
交换当前光标下的字符和光标前面的一个字符, 交换后, 光标向后移东一个字符
C-t
交换当前光标所在单词和光标前面一个单词, 交换后, 光标向后移动一个单词
M-t
把单词首字符变成大写, 其他变成小写
M-c
把单词变成小写
M-l
把单词变成大写
M-u
删除当前光标前面所有的空白字符
M-\
向后非增量搜索历史命令
M-p
相当于TAB健
C-i
相当于回车键
C-m/C-j
在当前光标处和上一次光标处不停的移动
C-x C-x

2.alias别名

有时候我们需要输入的一些命令比较长 或者有一些命令我们需要使用的次数太频繁,我们可以考虑将其设置一个别名,以此达到少输入字符的目的,提高我们输入命令的速度。举例说一下我的一些常用aliases吧(另外一些是我个人的一些特殊别名,此处不列出):

alias cd..='cd ../'

alias ..='cd ../'

alias ...='cd ../../'

alias ....='cd ../../../'

alias .....='cd ../../../../

alias ......='cd ../../../../../'

alias .1='cd ../'

alias .2='cd ../../'

alias .3='cd ../../../'

alias .4='cd ../../../../'

alias .5='cd ../../../../../'

3.环境变量

一些环境变量的设置,也能够为我们高效使用bash提供很好的帮助。目前我使用的环境变量还不多,等看完man bash以后可能还会添加。主要使用的有:
CDPATH:该变量设置cd时,搜索的目录。此处我们可以将我们常用的目录加入进去,这样cd的时候,就会比较快速。例如:

export CDPATH=".:$HOME/source",注意使用":"分隔不同的目录。假设我的source目录下有如下目录:gb ics jb

那么我在任意的路径下,只要执行cd gb(假设没有其他重名目录的话)就会跳到$HOME/source/gb目录

与History相关的环境变量,摘自 懒惰的程序员:http://www.wanglianghome.org/blog/2007/05/bash-history.html .大家可以移步查看完整版介绍。

# 忽略重复的命令
export HISTCONTROL=ignoredups
# 忽略由冒号分割的这些命令
export HISTIGNORE="[   ]*:&:bg:fg:exit"
# 设置保存历史命令的文件大小
export HISTFILESIZE=1000000000
# 保存历史命令条数
export HISTSIZE=1000000
shopt -s histappend #append instead of overwrite
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"


OK 今天先到这儿,第一次写,基本上是想到哪儿写到哪儿。后面抽空整理下,再继续后面的部分。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux shell bash