如何在 macOS 终端中查看命令历史记录列表
借助 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 附带的终端中的更改。