bash 可以用 ctrl + r 来搜索历史命令,但是有时候匹配不够好,所以有时候会用 history | grep xxx,来找,找到以后 鼠标选择然后复制,挺麻烦的。可以看到 history 有个 line num 信息,是否能快速利用起来?
1
liwufan 2019-02-12 17:56:36 +08:00
1. 为何不用 history | vim -
然后 /搜索内容 快速上下翻 2. vim 里面找到命令 然后 :行号 w !bash 就行了 |
2
mattx OP @liwufan #1 不行吧? history 输出是这样的格式 2 [2019-02-12 18:51:46] xxxx,“:行号 w !bash ” 会提取 2 开始的作为命令
|
3
xfspace 2019-02-12 19:04:06 +08:00 via Android
h | egrep '^行号空格' | bash
|
4
Augix 2019-02-12 19:08:07 +08:00 via Android
|
5
tsl0922 2019-02-12 19:21:59 +08:00 via iPhone
fish 在这方面做的比较好,输入命令的时候默认会搜索历史显示自动补全,但坏处是 fish 和 bash 语法不兼容。
zsh 有类似 fish 的补全插件,兼容 bash 语法(未测试,我用的是 fish )。 |
7
liwufan 2019-02-12 19:38:28 +08:00
@mattx history 的输出格式是自定义的,比如你这个时间戳就是 HISTTIMEFORMAT="[%F %T] " , 开头序号直接 history | cut -c 8- | vim - 不就行了?
man history 里面都写着,嫌麻烦可以不用 bash, zsh fish 这些也都可以 |
9
0xABCD 2019-02-12 20:12:43 +08:00 via Android
|
11
mattx OP 比较方便的是 bash 可以执行 !xxx , 比如输入 history 里面 855 行是 ps , 那么 !855 会执行 ps ,算是比较方便的.
|