V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
BIAOXYZ
V2EX  ›  Linux

请教一个 Linux 下快捷键的问题

  •  
  •   BIAOXYZ · 2020-03-22 15:53:45 +08:00 · 2457 次点击
    这是一个创建于 1499 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以如下命令片段为例:

    [root@c4-infra02 ~]# kubectl get all -n 1234 | grep mq
    No resources found.
    [root@c4-infra02 ~]# echo 1
    1
    [root@c4-infra02 ~]# echo 2
    2
    [root@c4-infra02 ~]# echo 3
    3
    [root@c4-infra02 ~]# kubectl get all -n 1234
    No resources found.
    [root@c4-infra02 ~]#
    [root@c4-infra02 ~]#
    [root@c4-infra02 ~]#
    [root@c4-infra02 ~]# kubectl get all -n 1 # 按 PageUp
    

    假设已经执行了五条命令,现在我想简单快速地跳转到第一条命令kubectl get all -n 1234 | grep mq,我在我个人的 Window 本上( ssh 客户端软件用的 MobaXterm ),我通常是这么做的:

    1. 输入kubectl get all -n 1(其实可以更短一些,本文中的例子只是跳过三条 echo 的话甚至只打一个k就行)
    2. PgUp直接以kubectl get all -n 1开头的命令进行自动补全,从而跳过那几个 echo 命令,很快到达kubectl get all -n 1234 | grep mq(实际上此时的PgUpCRTL+R已经很像了)。

    首先排除CRTL+Rhistory+grep,因为我的核心目的是想知道下述叙述中PgUp的代替是什么(如果确实有这种代替的话)。然后CRTL+P或者等价的键盘是无法跳过那三条 echo 的,所以也不算。

    问此问题的原因:我忘了单位的 Mac 是没有PgUp还是按了PgUp不管用,反正肯定是达不到跟我个人的这个 Windows 本一样的效果(用CRTL+R达到该效果除外)。另外不确定是不是 ssh 客户端自带的属性,因为 Mac 下无法用 MobaXterm,我用的是原生的和 FinalShell 。

    感谢回答先~

    9 条回复    2020-03-24 19:52:57 +08:00
    000o000
        1
    000o000  
       2020-03-23 00:32:13 +08:00 via Android
    zsh 有这个功能
    Judoon
        2
    Judoon  
       2020-03-23 10:52:10 +08:00
    这个快捷键和 linux 没关系,是终端模拟器和 shell 的

    oh-my-zsh + zsh-autosuggestions
    Judoon
        3
    Judoon  
       2020-03-23 10:52:37 +08:00
    这个快捷键和 linux 没关系,是终端模拟器和 shell 的

    oh-my-zsh + zsh-autosuggestions
    直接根据历史命令补全
    julyclyde
        4
    julyclyde  
       2020-03-23 14:50:38 +08:00
    ctrl+R 是 readline 快捷键吧
    BIAOXYZ
        5
    BIAOXYZ  
    OP
       2020-03-23 22:05:49 +08:00
    @Judoon #3 但是我没有用 zsh 啊。我也觉得不是 linux 原生的,看来除了 ctrl+r 或者换其他终端,应该没别的办法。
    BIAOXYZ
        6
    BIAOXYZ  
    OP
       2020-03-23 22:46:23 +08:00
    @julyclyde #4 我其实以前一直不知道是 readline 提供的~后来搜了下还发现了这个: https://readline.kablamo.org/emacs.html
    有个`Alt-p Search backward through history for a given string.`,看起来有点像我要的功能,但是试了试还是不太一样。谢谢了哈
    aloxaf
        7
    aloxaf  
       2020-03-24 13:11:57 +08:00   ❤️ 1
    zsh 和 bash 都支持 history expansion
    你可以输入 `!n` 执行第 n 条命令、`!-n` 执行倒数第 n 条命令,或者太难数行数的话也可以用 `!?str` 执行最近的包含 str 的命令
    你图中的例子只需要执行 `!?grep` 就能定位到第一条命令了。

    参考: https://www.gnu.org/software/bash/manual/html_node/Event-Designators.html#Event-Designators
    aloxaf
        8
    aloxaf  
       2020-03-24 13:26:51 +08:00
    顺便 PageUp 不管用可能是因为不同 Terminal Emulator 发送的转义序列不同,你可以重新绑定一下

    bind '"转义序列": history-search-backward'

    转义序列通过先按 C-v 再按对应的按键得到
    BIAOXYZ
        9
    BIAOXYZ  
    OP
       2020-03-24 19:52:57 +08:00
    @aloxaf #7 啊,经你一提醒才想起来还有叹号可以用。这个发帖时候没想起来,不过以前也用过,尤其是`!!`。谢谢提示哈~ #8 这个没太清楚,我先查查~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3436 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:45 · PVG 12:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.