在终端环境下进行日常操作时,经常需要对命令行的命令进行编辑,为了提高我们的编辑效率,整理了一些在 bash 中进行命令编辑的快捷键,希望能够对大家有帮助。
在历史命令中查找
通过 Ctrl + r
组合键可以反向增量查找消息历史,很好用。 比如很久以前输入过某个命令如: gcc -c -DKKT -Dnnn
等等一长串, 用上下方向键来找比较困难,这时候可以 Ctrl + r
,然后输入 gcc
很快找到该命令,重复按 Ctrl + r
将查找更早的历史。
- Ctrl + r :逆向搜索历史命令
- Ctrl + g :从历史搜索模式退出
- Ctrl + p :历史中的上一条命令
- Ctrl + n :历史中的下一条命令
- Alt + . :使用上一条命令的最后一个参数
命令行中移动
Ctrl + f
表示在命令行中向后移动一个字符。Ctrl + b
表示在命令行中向前移动一个字符。- 移动一个字符往往不能满足需求,这时需要移动一个单词的快捷键。
Alt + f
表示在命令行中向后移动一个单词。Alt + b
表示在命令行中向前移动一个单词。Ctrl + a
表示移动到命令行的行首。Ctrl + e
表示移动到命令行的行尾。
命令行中删除
Alt + d
往右边删除一个单词Alt + Backspace
往左删除一个单词Ctrl + u
往左删除到行首Ctrl + k
往右删除到行末
其中这些删除都放入了删除环里面,可以使用 Ctrl + y
找回。
Alt + y 在删除环里面移动也就是说命令行里面可以使用剪切和粘贴了。
上面的几条如果用熟练了效率能提高很多。
Bang(!)命令
- !!:执行上一条命令
- !blah:执行最近的以 blah 开头的命令,如 !ls
- !blah:p:仅打印输出,而不执行
- !$:上一条命令的最后一个参数,与 Alt + . 相同
- !$:p:打印输出 !$ 的内容
- !*:上一条命令的所有参数
- !:p:打印输出 ! 的内容
- ^blah:删除上一条命令中的 blah
- ^blah^foo:将上一条命令中的 blah 替换为 foo
- ^blah^foo^:将上一条命令中所有的 blah 都替换为 foo
写在最后
Bash 下有两种输入模式 vi 模式 和 emacs模式,其中emacs是默认模式。可以通过 set -o vi
和 set -o emacs
来转换。