打印和查询命令历史记录以查找特定的过去命令

macOS 中的终端

如果您想记住通过终端执行的确切命令但又不太记得,您可以查询您的 命令行历史发现过去运行或执行的旧命令。

这个查找和检索先前在命令行中执行的命令的技巧适用于 Mac OS、Mac OS X 以及 linux 和其他 unix 操作系统。任何具有标准历史命令的东西都可以使用这个技巧来检索以前的命令,使其成为系统管理员和命令行用户的宝贵工具。

如何从 Mac OS 的命令历史记录中查找特定命令

要跟踪特定命令的命令历史记录,您需要打开终端应用程序,然后使用以下语法:

历史 |grep "搜索字符串"

这将在您的命令历史记录中查找“搜索字符串”,并且只打印回包含搜索文本的实例。

如果您不熟悉终端并且想知道为什么这可能有用,让我们举个例子。

示例:搜索过去的“默认”命令
这是一个实际示例:我试图回忆我最近使用的默认写入命令的确切语法。默认命令通常是修改 Mac OS X 或某些应用程序行为的长文本字符串,因为它们的长度和晦涩难懂,至少可以说,试图记住其中之一是具有挑战性的。

我没有点击向上箭头滚动浏览过去的执行,而是使用以下命令将我的命令历史缩小到只有“默认写入”的东西:

<代码>历史 | grep“默认写入”

这会通过 grep 传递大量“history”命令的结果,以仅查找在命令字符串中包含“defaults write”的实例,您将看到类似于以下内容的结果列表:

$ history |grep "defaults write"
44 defaults write com.apple.iTunes full-window -1
51 defaults write com.apple.iTunes invertStoreLinks -bool YES
421 默认写入 com.apple.FaceTime AutoAcceptInvitesFrom -array-add osxdailycom@gmail.com
426 默认写入 com.twitter.twitter-mac ESCClosesComposeWindow -bool true
427 默认写入 com.twitter.twitter- mac ESCClosesComposeWindow -bool false
428 默认写入 com.apple.appstore ShowDebugMenu -bool true

现在您不必搜索整个历史列表,而是缩小了结果范围。

细化命令历史搜索的细节

您可以根据需要将历史搜索设为特定或不特定。例如,如果我知道我要查找的与 com.apple.iTunes 相关的默认命令,我可以使用以下命令进一步优化我的搜索:

历史 |grep "defaults write com.apple.iTunes"

这会返回类似的东西:

44 defaults write com.apple.iTunes full-window -1
51 defaults write com.apple.iTunes invertStoreLinks -bool YES

亲自尝试一下。您可以使用通过终端输入的任何命令执行此操作,因为所有最近执行的命令都存储在您的历史记录中。默认命令是 Mac OS X 特定的,但是 history 和 grep 是 unix 世界通用的工具,所以如果你曾经在 Linux 机器上,否则您可以使用相同的技术。

如果您喜欢了解 Mac OS X 的基础知识,请查看我们的命令行提示