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

2020-03-22 15:53:45 +08:00
 BIAOXYZ

以如下命令片段为例:

[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 。

感谢回答先~

2618 次点击
所在节点    Linux
9 条回复
000o000
2020-03-23 00:32:13 +08:00
zsh 有这个功能
Judoon
2020-03-23 10:52:10 +08:00
这个快捷键和 linux 没关系,是终端模拟器和 shell 的

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

oh-my-zsh + zsh-autosuggestions
直接根据历史命令补全
julyclyde
2020-03-23 14:50:38 +08:00
ctrl+R 是 readline 快捷键吧
BIAOXYZ
2020-03-23 22:05:49 +08:00
@Judoon #3 但是我没有用 zsh 啊。我也觉得不是 linux 原生的,看来除了 ctrl+r 或者换其他终端,应该没别的办法。
BIAOXYZ
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
2020-03-24 13:11:57 +08:00
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
2020-03-24 13:26:51 +08:00
顺便 PageUp 不管用可能是因为不同 Terminal Emulator 发送的转义序列不同,你可以重新绑定一下

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

转义序列通过先按 C-v 再按对应的按键得到
BIAOXYZ
2020-03-24 19:52:57 +08:00
@aloxaf #7 啊,经你一提醒才想起来还有叹号可以用。这个发帖时候没想起来,不过以前也用过,尤其是`!!`。谢谢提示哈~ #8 这个没太清楚,我先查查~

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

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

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

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

© 2021 V2EX