如何在不执行的情况下按数字从历史记录中获取命令到我的命令行?
This immediately executes command number 555 which I'm not looking for:
$ history 10
$ !555
This opens the command up in an editor, which is overkill most of the time:
$ history 10
$ fc 555
This is an example of what I'm looking for:
$ history 10
$ #555
$ [command 555 from history listing now sitting here on my command line ready to edit or execute]
谢谢!
:p
在数字后面加上。例子:
打印以显示而不执行。
要在 BASH 中使用它,您需要做更多的事情。示例:
https ://tldp.org/LDP/abs/html/histcommands.html
会将所有历史记录放入 var 中,您需要更多逻辑来找到所需的命令。
如果您正在使用
bash
,我想您是;输入历史编号:然后按:Ctrl+ Alt+ e,现在历史记录中所需的命令正在您的提示符中等待执行,而不会更改历史记录的默认行为:
它也适用于
aliases
,substitutions
和expansions
历史论据说:$ echo !555:1
,~
,$HOME
,$(echo hi)
.这就是我如何确保在实际运行之前确切执行历史记录中的哪些命令。
编辑:我一开始错误地说“ctrl-f”实际上是“ctrl-r”......(我每天使用多次)。我现在编辑了正确的命令...
不是您要求的方法,但可能适合您似乎需要做的事情(即,在历史记录中找到上一行并在再次输入/执行之前对其进行编辑):
这样就无需进行历史记录并找出您需要编辑的历史编号以及实际检索和编辑它的另一个组合: [Ctrl]+r Something将为您找到包含Something 的前一行并在编辑中显示它模式。一般来说,它要快得多。
如果您经常需要编辑 1 个命令并在其后跟随一系列重复的命令,则 Ctrl-o(而不是 enter)特别有用
还有一个不错的奖励:这个 ctrl-r 等:通常在其他程序中可用(例如:mariadb-server cli [用于检索最后一个“使用”命令],可能还有许多其他程序)。它可能基于(可能由或至少使用)“readline”机制,但我不知道细节......
您可以像这样直接使用 bash 内置命令:
read
或者你可以将它添加到你喜欢的函数中:
~/.bashrc
并像这样使用它:
这将在提示符处显示命令,您可以对其进行编辑....Enter执行或Ctrl+c中止。