大多数 Linux 都会记住您在终端运行的命令。这对于找出您对系统所做的操作非常有用,尤其是对于服务器。

对于代码较长的常用命令,您无需一遍又一遍地输入所有代码。您可以使用历史命令选项重新运行,只需按几下键即可。

列出历史命令

要查看您在 Linux 中运行哪些命令,只需运行 history 命令:

history

在输出中,你会看到很多你之前运行过的命令。并且每个命令的开头都有一个数字作为命令的顺序。

History

如果历史命令太多,可能很难浏览并找到某个命令。在这种情况下,需要使用 grep 命令进行过滤。例如,运行以下命令来搜索包含 git submodule 的历史命令。

 history | grep "git submodule"

grep 是一个强大的命令,您还可以在 grep 命令之后添加选项 -E 使用正则表达式进行过滤。

重新运行历史命令

一旦您获得历史命令序号,它太长或者您不记得,您可以通过输入 !number 来重新运行它,其中 number 是 history 命令输出最前面的编号。

例如,根据上一个屏幕截图,下面的运行命令将重新运行 ls 命令列出当前目录的所有文件。

并且在终端窗口中,它会输出您按 Enter 后立即要运行的内容。如果你使用是 ohmyzsh,它将会打印命令,但不立即运行,需要你按下 Enter 确认运行。

!4466
history comand

为了避免记忆错误的命令,您可以使用以下命令,通过在最后添加 :p 首先预览历史命令的详情:

!4466:p

然后,如果确认这确实是您想要的命令,请重新运行 !4466

运行最后一条历史命令

对于最后一条命令,不需要查找历史记录编号,只需使用下面的命令即可重新运行它:

!!

您还可以将它与其他命令一起使用。例如,使用 sudo 权限重新运行上一个命令:

sudo !!

或者重新运行上一个命令,然后关机:

!! && poweroff

你也可以指定上一次运行的命令字符,例如,以指定的字符串重新运行最后一个命令:

!sudo

!sudo 命令将重新运行以 sudo 开头的最后一个命令。并且,以上所有命令在运行前都可以在后面添加 :p  预览将要运行的命令。