这是一篇翻译的文章,原文:Bash Shortcuts For Maximum Productivity。稍有修改和整理。
你可能知道,Bash有非常丰富的快捷键,能够让使用命令行轻松很多。Bash这种用快捷键编辑命令行的功能,是通过GNU Readline library实现的。这个库也被除了Bash之外的许多其它Unix或者Linux应用使用,因此,学习这些快捷键不仅能够使你更加方便地使用Bash,也能提高使用其它Unix或者Linux应用的效率(如果该应用也使用了GNU Readline library的话)。这里,我不想深入讲解Readline,只提一点。默认地,Readline使用emacs按键绑定,尽管可以配置成vi模式,但是,我更加喜欢学习大部分应用的缺省设置(我发现不用个性化设置,能省掉好多工作,可以使生活更加轻松)。如果你对emacs十分熟悉,那么你可能对这些命令并不陌生,因此,下面这些是写给那些不熟悉的人。
1、命令编辑的快捷键
1.1 移动光标
Ctrl + f
光标向前移动一个字符Ctrl + b
光标向后移动一个字符Alt + b
将光标向后移动一个单词Alt + f
将光标向前移动一个单词Ctrl + a
光标移动到命令的开头Ctrl + e
光标移动到命令行的结尾Ctrl + xx
将光标在行首和当前位置交替
1.2 编辑
Ctrl + d
删除光标处的字符Ctrl + h
删除光标前的字符Ctrl + w
删除从光标到单词开头的所有字符(向后删除一个单词)Alt + d
删除从光标处到单词结尾的所有字符(向前删除一个单词)Ctrl + k
删除从光标到行尾的所有字符Ctrl + u
删除从光标到行首的所有字符Ctrl + y
将刚刚删除的内容粘贴到光标的后面Alt + c
将光标到单词结尾的字符串的首字母大写Alt + u
将光标到单词结尾的所有字符变成大写Alt + l
将光标到单词结尾的所有字符变成小写Ctrl + t
将光标处的字符和前一个字符调换位置Alt + t
将当前单词和前一个调换位置
2、命令召回快捷键
Ctrl + r
向后搜索历史命令Ctrl + g
退出命令搜索模式Ctrl + p
命令历史中的前一条记录Ctrl + n
命令历史中的后一条记录Alt + .
召回前一条命令的最后一个单词
3、命令控制快捷键
Ctrl + l
清空屏幕Ctrl + s
停止向屏幕输出(对于那些长时间运行且输出繁复的命令)Ctrl + q
允许向屏幕输出(如果前面用命令停止了向屏幕输出的话)Ctrl + c
终止命令Ctrl + z
挂起/停止命令
4、Bash !
命令
Bash允许你使用!
来方便地处理Bash命令。
!!
运行上一条命令!blah
运行上一条blah开头的命令!blah:p
打印出!blah
将会运行的命令,并将该命令作为最新的命令加到命令历史中!$
上一条命令的最后一个单词(相当于Alt + .
)!$:p
打印出!$
代表的单词!*
上一条命令除去最后一个单词的部分(比如,如果运行find some_file.txt /
,然后,!*
将给出find some_file.txt
)!*:p
打印出!*
代表的内容
还有一件非常方便的使用技巧:^^
命令的使用。如果你输入一条命令并运行,你可以用^^
替换掉该命令中的一部分重新运行。下面是一个例子:
$ ls -al
total 12
drwxrwxrwx+ 3 Administrator None 0 Jul 21 23:38 .
drwxrwxrwx+ 3 Administrator None 0 Jul 21 23:34 ..
-rwxr-xr-x 1 Administrator None 1150 Jul 21 23:34 .bash_profile
-rwxr-xr-x 1 Administrator None 3116 Jul 21 23:34 .bashrc
drwxr-xr-x+ 4 Administrator None 0 Jul 21 23:39 .gem
-rwxr-xr-x 1 Administrator None 1461 Jul 21 23:34 .inputrc
$ ^-al^-lash
ls -lash
total 12K
0 drwxrwxrwx+ 3 Administrator None 0 Jul 21 23:38 .
0 drwxrwxrwx+ 3 Administrator None 0 Jul 21 23:34 ..
4.0K -rwxr-xr-x 1 Administrator None 1.2K Jul 21 23:34 .bash_profile
4.0K -rwxr-xr-x 1 Administrator None 3.1K Jul 21 23:34 .bashrc
0 drwxr-xr-x+ 4 Administrator None 0 Jul 21 23:39 .gem
4.0K -rwxr-xr-x 1 Administrator None 1.5K Jul 21 23:34 .inputrc
这里,^-al^-lash
将原来ls
命令中的-al
替换为-lash
并重新运行。
说到Bash的快捷键,还有很多。但是,上面提到的囊括了90%能够极大提高Bash工作效率的快捷键。如果你觉得我漏掉了一个必需的Bash快捷键,请告诉我,我会在博客中更新。