bash shell history search

2019-02-12 17:37:54 +08:00
 mattx

bash 可以用 ctrl + r 来搜索历史命令,但是有时候匹配不够好,所以有时候会用 history | grep xxx,来找,找到以后 鼠标选择然后复制,挺麻烦的。可以看到 history 有个 line num 信息,是否能快速利用起来?

  1. 求 快速搜索历史命令的方法,可以快速往上往下翻
  2. 求 history 高级用法,快速找到某条历史命令,并自动生成在 shell 终端
7410 次点击
所在节点   Bash
11 条回复
liwufan
2019-02-12 17:56:36 +08:00
1. 为何不用 history | vim -
然后 /搜索内容 快速上下翻
2. vim 里面找到命令 然后
:行号 w !bash
就行了
mattx
2019-02-12 18:52:40 +08:00
@liwufan #1 不行吧? history 输出是这样的格式 2 [2019-02-12 18:51:46] xxxx,“:行号 w !bash ” 会提取 2 开始的作为命令
xfspace
2019-02-12 19:04:06 +08:00
h | egrep '^行号空格' | bash
Augix
2019-02-12 19:08:07 +08:00
tsl0922
2019-02-12 19:21:59 +08:00
fish 在这方面做的比较好,输入命令的时候默认会搜索历史显示自动补全,但坏处是 fish 和 bash 语法不兼容。

zsh 有类似 fish 的补全插件,兼容 bash 语法(未测试,我用的是 fish )。
mattx
2019-02-12 19:36:56 +08:00
@tsl0922 #5 fish 和 zsh 好像在 gbk 编码支持上 比较差对吧?
liwufan
2019-02-12 19:38:28 +08:00
@mattx history 的输出格式是自定义的,比如你这个时间戳就是 HISTTIMEFORMAT="[%F %T] " , 开头序号直接 history | cut -c 8- | vim - 不就行了?

man history 里面都写着,嫌麻烦可以不用 bash, zsh fish 这些也都可以
tsl0922
2019-02-12 19:44:07 +08:00
@mattx 没有吧,没遇到过这个问题
0xABCD
2019-02-12 20:12:43 +08:00
mattx
2019-02-12 20:15:25 +08:00
@0xABCD #9
@Augix #4
@xfspace #3
@liwufan #7 thx
mattx
2019-04-23 16:34:50 +08:00
比较方便的是 bash 可以执行 !xxx , 比如输入 history 里面 855 行是 ps , 那么 !855 会执行 ps ,算是比较方便的.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/534286

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX