技术解析

请教一个 Linux 下快捷键的问题
0
2021-06-17 22:20:39
idczone

以如下命令片段为例:

[[email protected] ~]# kubectl get all -n 1234 | grep mq
No resources found.
[[email protected] ~]# echo 1
1
[[email protected] ~]# echo 2
2
[[email protected] ~]# echo 3
3
[[email protected] ~]# kubectl get all -n 1234
No resources found.
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# 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 。

感谢回答先~


zsh 有这个功能

这个快捷键和 linux 没关系,是终端模拟器和 shell 的
oh-my-zsh + zsh-autosuggestions

这个快捷键和 linux 没关系,是终端模拟器和 shell 的
oh-my-zsh + zsh-autosuggestions
直接根据历史命令补全

ctrl+R 是 readline 快捷键吧

但是我没有用 zsh 啊。我也觉得不是 linux 原生的,看来除了 ctrl+r 或者换其他终端,应该没别的办法。

我其实以前一直不知道是 readline 提供的~后来搜了下还发现了这个: https://readline.kablamo.org/emacs.html
有个`Alt-p Search backward through history for a given string.`,看起来有点像我要的功能,但是试了试还是不太一样。谢谢了哈

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

顺便 PageUp 不管用可能是因为不同 Terminal Emulator 发送的转义序列不同,你可以重新绑定一下
bind '"转义序列": history-search-backward'
转义序列通过先按 C-v 再按对应的按键得到

啊,经你一提醒才想起来还有叹号可以用。这个发帖时候没想起来,不过以前也用过,尤其是`!!`。谢谢提示哈~ 这个没太清楚,我先查查~

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服