输入重复命令太麻烦
使用特殊命令**!!**,可以自动替换成上一次使用的命令:
$ apt install net-tools
$ sudo !!
sudo apt install net-tools
有的命令很长,一时间想不起来具体参数了怎么办?
Ctrl+R快捷键反向搜索历史命令
对于 bash 终端,可以使用Ctrl+R快捷键反向搜索历史命令,之所以说是反向搜索,就是搜索最近一次输入的命令。
比如按下Ctrl+R之后,输入sudo,bash 就会搜索出最近一次包含sudo的命令,你回车之后就可以运行该命令了:
(reverse-i-search)`sudo': sudo apt install git
但是这个方法有缺点:首先,该功能似乎只有 bash 支持,我用的 zsh 作为 shell 终端,就用不了;第二,只能查找出一个(最近的)命令,如果我想找以前的某个命令,就没办法了。
使用history命令配合管道符和grep命令
对于这种情况,我们最常用的方法是使用history命令配合管道符和grep命令来寻找某个历史命令:
# 过滤出所有包含 config 字段的历史命令
$ history | grep 'config'
7352 ./configure
7434 git config --global --unset https.proxy
9609 ifconfig
9985 clip -o | sed -z 's/\n/,\n/g' | clip
10433 cd ~/.config
你使用的所有 shell 命令都会被记录,前面的数字就表示这是第几个命令,找到你想重复使用的命令后,也不需要复制粘贴该命令,只要使用!+ 你想重用的命令编号即可运行该命令。
拿上面的例子,我想重新运行git config那条命令,就可以这样:
$ !7434
git config --global --unset https.proxy
运行完成
我觉得history加管道加grep这样打的字还是太多,可以在你的 shell 配置文件中(.bashrc,.zshrc等) 中写这样一个函数:
his()
{
history | grep "$@"
}
这样就不需要写那么多,只需要his 'some_keyword’即可搜索历史命令。