如何在 macOS 终端中查看命令历史记录列表

macOS Big Sur 终端图标

借助 macOS 终端,您可以使用以下命令节省大量时间并减少输入终端 shell 中内置的命令历史功能。 shell 会记录您运行的命令,您可以通过几个简单的击键来访问此历史记录,以再次运行命令或编辑它们,这样您就不必重新输入它们。

您可以通过运行history命令随时查看历史记录中有哪些命令。当您输入history并按 Return 时,终端会在历史记录列表中显示命令列表。例如:

1 ls

2 cd ..

3 ls

4 cd 柯克

每行包含命令编号(从第一行到最后一行)和命令本身。终端包含所有命令,无论它们是否成功。这意味着错误或拼写错误的内容将出现在历史记录中。

限制历史列表

显示历史列表的方式有多种。在大多数情况下,您希望查看最新的命令。实现此目的的一种方法是运行 history 命令,并使用一个参数来说明您要显示的命令数量。

例如,history 5 告诉 shell 显示历史列表中从第五个命令开始的命令。您可以输入任何数字作为 history 命令的参数;如果您输入的数字无效(很可能您的列表没有您输入的数字那么长),终端将响应 fc: no such event

节省时间的快捷方式

正如单独的文章中所述,您可以通过按箭头键向上或向下移动历史记录列表。这是重新运行最近执行的命令的最简单方法。但是,如果您的命令在列表中较靠后的位置,则可以通过更快的方法告诉 shell 要运行哪个命令。

假设您已经显示了很长的历史列表,其中一部分如下所示:

329定位瓦尔登湖

330 历史记录

331 ls -l

如果您想重新执行命令locate Walden,请输入!329。感叹号 (!) 是历史列表中命令的快捷方式。如果您在其后输入一个数字(中间没有空格),终端将运行历史记录中具有该绝对数字的命令。

相对编号:指定前一个命令的另一种方法是使用相对编号,或从列表末尾算起的第 n 个命令。例如,如果您的历史记录有 200 个条目,并且您想要输入从第 200 个条目开始的第五条命令,请输入 !-5

字符:您可以告诉 shell 运行最后一个以特定字符串开头的命令。例如,运行相同locate Walden命令的另一种方法是键入!loc(感叹号后没有空格)。

在感叹号后输入任意数量的字符。 shell 将在第一次出现与这些字符匹配的字符串时停止。在刚才提到的示例中,我可以输入 !lo,因为没有其他以这些字母开头的命令。但如果我仅输入 !l,该示例将运行命令 331,即 ls -l 命令,因为这将是第一场比赛。

有关终端的更多信息,请阅读:

编者注:本文部分内容改编自Mac OS X 命令行:Unix 底层,作者:Kirk McElhearn ( 2004 年;经 Sybex 许可转载)。它已进行更新,以反映 macOS Big Sur 附带的终端中的更改。