在他们的日常操作中,系统管理员可以在服务器上执行无数的命令来完成他们的目标。 他们可能在每个会话中运行数百个命令,并且每个会话可能与上一个会话不同。 这使得很难记住您过去执行的所有命令。 但是不用担心,很多人都不知道,每当他们在终端上打字时,Linux 都会将所有执行的命令记录在一个文件中。
在本指南中,我将引导您完成查找命令历史记录并从那里重用命令所需的命令。 当您习惯这些命令时,请确定您不会无意中执行可能给您带来问题的命令。 也就是说,如果可能,请花点时间使用这些命令并在沙盒或虚拟机中练习它们,然后再在实时环境中执行它们。
尽管这些命令适用于大多数 Linux 发行版,但出于本指南的目的,我将使用 Ubuntu 20.04 向您展示这些命令。
滚动浏览最近的命令
查找命令的最简单方法是使用终端中的向上和向下箭头键。 您可以像这样循环浏览最近的命令。
当你找到你想要的命令时,你所要做的就是按“Enter”。
“历史”命令
在终端中运行“历史”命令只会列出终端中执行的最后一千条命令。 每个命令都以数字为前缀。
$history
运行带有“x”编号的历史命令将列出最后执行的“x”命令。 就像我们运行以下命令一样,我们会执行最后 2 个命令。
$history 2
您可以将数字更改为您想要的任何数字,例如 20、30、40 或任何数字。
执行上一个命令
现在我们了解了“历史”命令,您可以简单地使用前面的数字重新执行命令,就这样。 让我们运行历史。
现在在所有这些命令中,假设我想运行第二个命令。 我需要做的就是获取号码并像这样运行它:
$!2
请记住,感叹号和数字之间没有空格。
使用 grep 增强搜索
到目前为止,我们一直在使用简单的命令作为 example. 假设您正在处理冗长的命令,而您只记得部分内容。 为了找出所有使用特定关键字的命令,您可以结合使用 grep 命令和 history 来提取所有相关命令。
让我们尝试在我们的命令中包含“.com”的地方提取命令:
$history | grep .com
在这里,您将看到您的关键字以红色突出显示。
使用内置的反向搜索
搜索以前使用过的命令的另一种方法是通过终端内置的反向搜索。 要做到这一点,您只需按“Ctrl + r”即可。
这样做,您将看到您的终端更新为:
现在您可以开始输入所需的关键字,您将看到终端返回相关匹配项。 所以,让我们试着回到开头,调出与主机名相关的命令。
再次按“Ctrl + r”,您将循环浏览所有结果。
现在为了运行这些命令中的任何一个,您可以按“Enter”键来执行您选择的命令。
快速执行上一条命令
通过练习,您有足够的信心记住您执行的最后一个命令。 如果您确实记得最后一个命令并且知道它不会给您带来任何问题,您可以使用以下命令快速再次运行它:
$!!
正如你在这里看到的,我运行了一个简单的“ls”。 跑步 ”!!” 告诉你哪个命令最后运行,然后再次执行。 现在有时,它可能是需要提升权限的命令,您可以将该命令运行为:
$sudo !!
从历史记录中排除命令
现在,如果您想让您的命令不被包含在终端历史记录中,您可以在它之前添加一个空格,终端将不会保存它。
如您所见,我在“hostnamectl”之后执行了“ls”,但是当我拉起历史记录时,倒数第二个位置的“ls”命令并没有包含在历史记录中。
结论
通过一些练习,这些命令在您的日常操作中变得本能地使用,并且可以使您在终端上的时间更加有效和高效。 通过这些命令,您可以识别并重新执行一个很少使用的命令,或者一个最初难以安排/记住的命令。
与往常一样,如果您在使用这些命令时遇到任何问题或想了解更多有关它们的信息,请随时在下方给我们留言,我们将引导您解决任何问题或错误。