首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉勾
V2EX  ›  Bash

bash shell history search

  •  
  •   mattx · 39 天前 · 521 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    1. 求 快速搜索历史命令的方法,可以快速往上往下翻
    2. 求 history 高级用法,快速找到某条历史命令,并自动生成在 shell 终端
    10 回复  |  直到 2019-02-12 20:15:25 +08:00
        1
    liwufan   39 天前
    1. 为何不用 history | vim -
    然后 /搜索内容 快速上下翻
    2. vim 里面找到命令 然后
    :行号 w !bash
    就行了
        2
    mattx   38 天前
    @liwufan #1 不行吧? history 输出是这样的格式 2 [2019-02-12 18:51:46] xxxx,“:行号 w !bash ” 会提取 2 开始的作为命令
        3
    xfspace   38 天前 via Android
    h | egrep '^行号空格' | bash
        4
    Augix   38 天前 via Android
        5
    tsl0922   38 天前 via iPhone
    fish 在这方面做的比较好,输入命令的时候默认会搜索历史显示自动补全,但坏处是 fish 和 bash 语法不兼容。

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

    man history 里面都写着,嫌麻烦可以不用 bash, zsh fish 这些也都可以
        8
    tsl0922   38 天前 via iPhone
    @mattx 没有吧,没遇到过这个问题
        9
    0xABCD   38 天前 via Android
        10
    mattx   38 天前
    @0xABCD #9
    @Augix #4
    @xfspace #3
    @liwufan #7 thx
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2217 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 10:46 · PVG 18:46 · LAX 03:46 · JFK 06:46
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1