0%

Shell终端快速搜索命令历史记录

因为看到同事操作终端的速度比我快很多,我发现我之前调用终端历史命令的方式一直有点笨笨的……

方式一:用方向键 ↑ ↓

最开始使用的方式,如果想要用的命令输入的比较久了,找起来就比较累了

方式二:history命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
magicdian@MacBook-Pro-14 ~ % history  
988 traceroute 192.168.215.2
989 traceroute 172.16.215.49
990 ping 172.16.215.49
991 ls
992 ping xjmz.magicdian.cn
993 cd Documents-Local
994 ls
995 cd meizu-work
996 ls
997 ssh magicdian@192.168.4.6
998 ssh root@192.168.4.4
999 ls -l
1000 ping vpn.meizu.com
1001 List processes at port 80
1002 scp /Users/magicdian/Downloads/cert.zip magicdian@192.168.4.20:/tmp
1003 curl 192.168.4.20:33306

history命令也是我之前使用比较久的,有需要历史命令的时候,就先敲个history,再复制粘贴一下,效率还是比较低。

方式三:反向查找

默认状态下,终端是这样的

1
magicdian@MacBook-Pro-14 ~ %      

这时通过快捷键 Ctrl + r ,终端会变成这个样子

1
2
magicdian@MacBook-Pro-14 ~ %                                                                    
bck-i-search: _

这个时候如果我想用之前的scp命令重新传一下文件,我直接输入scp,就会弹出之前输入过的命令

1
2
magicdian@MacBook-Pro-14 ~ % scp /Users/magicdian/Downloads/cert.zip magicdian@192.168.4.20:/tmp
bck-i-search: scp_

如果要找的是这个命令,按下 或者 退出搜索模式,然后按回车就可以执行了,当然不退出,直接按回车,也是可以顺利运行的。

那如果我运行过比较多相似的命令,但第一个搜出来的并不是我需要的命令怎么办呢? 比如我ping过很多ip地址

1
2
3
magicdian@MacBook-Pro-14 ~ % ping vpn.meizu.com                                                 
bck-i-search: ping_

但这条命令可能不是我现在想要的命令,我们可以继续往前找,这个时候再一次按Ctrl + r 快捷键,就会显示上一条跟ping相关的命令

1
2
3
magicdian@MacBook-Pro-14 ~ % ping 172.16.215.49                                                 
bck-i-search: ping_

如果不小心多按了 Ctrl + r 快捷键,可以按 Ctrl + s快捷键正向查找,但是可能会遇到Ctrl + s 快捷键被占用的情况,比如在Linux shell环境里 Ctrl + s的意思可能是暂停的意思,暂停后要Ctrl + q 退出暂停模式
可以用命令stty -ixon 关闭暂停模式,这样按下 Ctrl + s就可以正向查找了。也可以自行配置shell的配置,修改对应的快捷键

在我的Ubuntu Shell中
(i-search) ping: 是正向查找
(reverse-i-search) ping:是反向查找


啥也不是,散会