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

bash shell history search

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

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

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

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

    man history 里面都写着,嫌麻烦可以不用 bash, zsh fish 这些也都可以
        8
    tsl0922   273 天前 via iPhone
    @mattx 没有吧,没遇到过这个问题
        9
    0xABCD   273 天前 via Android
        10
    mattx   273 天前
    @0xABCD #9
    @Augix #4
    @xfspace #3
    @liwufan #7 thx
        11
    mattx   203 天前
    比较方便的是 bash 可以执行 !xxx , 比如输入 history 里面 855 行是 ps , 那么 !855 会执行 ps ,算是比较方便的.
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1431 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 23:50 · PVG 07:50 · LAX 15:50 · JFK 18:50
    ♥ Do have faith in what you're doing.