如何使用history实用程序复制以前input的命令而不再运行它?

我可以在CentOS上使用history命令来获取之前input的命令列表,但是,如果我做了如下的操作: !372 ,历史将尝试运行参考的命令。

我需要先前的运行命令出现在当前光标处。 这是一个例子:

 [dev@home ~]$ previous_command_no_execute!372 

如何,把这个放在你的命令行上:

 $ !372 

然后按ESC然后按CTRL + E。 这将在命令行上自动展开而不实际运行。 (也扩大了其他的一切,包括环境variables)

就我所知,这只适用于Bash。

您可以使用Ctrl r ,然后从原始命令中input一些字符,例如

 (reverse-i-search)`/etc': sudo /etc/init.d/apache2 restart 

上面我input了Ctrl-r /etc ,它从历史logging中拉出sudo /etc/init.d/apache2 restart命令

history | grep 372 history | grep 372应该可以工作,对吧?

编辑:

另外你可以像echo !372 > /dev/clip这样的命令将命令目录放到剪贴板中。

MDMarra给出了简单的方法( history|grep和复制/粘贴使用您的桌面环境,假设你有一个)。 我会提供我所说的硬性方法,如果您没有桌面环境或鼠标,这种方法就可以工作。

假设你正在运行bash作为你的shell:

$ set -o vi
$ ESC 372k

(你现在已经有了372个命令在命令行上运行的命令,并且你将会进入vi风格的命令模式,如果你使用的是ex / vi就可以进行编辑)

最简单,最快捷的方法是运行:

 !372:p 

然后按Enter

你在桌面系统或服务器上?

在打开shell的Kubuntu桌面系统上,它支持用鼠标突出显示。 我通常只需用鼠标突出显示文本,然后单击鼠标中键将其粘贴进去。是否适合您?

所以你可以grep的命令。 突出显示文字。 用鼠标中键粘贴,然后编辑它。

可能有更好的办法,但这对我有用。

没有执行自动粘贴的命令,但是可以在执行前将任何命令调回编辑器进行编辑。 这可能会实现你正在寻找的东西,但是一旦退出命令就会执行,所以如果你想中止,你应该在退出编辑器之前清除你的编辑缓冲区。

fc -e vi 372 372