由于自己平时使用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 今天先到这儿,第一次写,基本上是想到哪儿写到哪儿。后面抽空整理下,再继续后面的部分。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐