查看历史 历史扩展

查看历史 历史扩展

我必须重写历史扩展命令,而不是从历史中调用它。

例如,我必须在以下命令中将 35 更改为 36, 37, 38....。

$ print -P '\033[35mThis is the same red as in your solarized palette\033[0m'
$ !!:gs/35/36

现在我需要做到!!:gs/36/37

然而,当我使用Up钥匙时。它没有显示$ !!:gs/35/36。表明print -P '\033[35mThis is the same red as in your solarized palette\033[0m'

这里可以做什么?

答案1

我有两个建议您如何实现您想要的(仅指bash):

将其添加到历史记录中

在输入第一个历史扩展命令行之前,您可以禁用历史扩展 ( set +H) 并“执行”历史扩展命令(然后使用 重新启用set -H)。然后它就成为 shell 历史记录的一部分,您可以轻松返回并修改它。

在 shell 历史记录中获取历史扩展命令行的更直接方法是history -s。不过,早期的建议可能更容易记住(并且在复杂引用的情况下可能更容易)(取决于某人对 shell 选项的熟悉程度)。

读取线拉入

当您在整个操作过程中不需要猛拉时,这是最有用的。

输入历史扩展命令行,但不要按Enter。相反,转到行的开头/结尾并使用Ctrl- K/ Ctrl-删除整行U。这将整条线置于杀戮环上。您可以使用Ctrl-恢复线路Y。即使在执行该命令之后,只要您不将任何其他内容放入 Kill Ring 中,您就可以通过这种方式取回它。即使:您可以使用Ctrl- Y Alt-返回较早的杀戮环条目Y

答案2

它将显示该输出,因为终端认为您输入了整个命令示例:如果我输入pacman -S vim 我会看到error: you cannot perform this operation unless you are root.

所以我会sudo !!在输入密码之前输入然后我会看到一行sudo pacman -S vim

只是一个屏幕截图

相关内容