Macos Mac终端历史记录-具有过去结果的命令

Macos Mac终端历史记录-具有过去结果的命令,macos,terminal,Macos,Terminal,我在Mac(dev/prod)上使用了两个终端窗口,这两个窗口都显示了过去6个月的命令和结果历史记录(向上滚动),这对于定期运行命令和检查过去的错误非常有帮助 昨天我关掉了mac电脑并手动关闭了两个终端窗口,但今天打开终端时,它根本没有任何历史记录。有没有一种方法可以恢复包含过去命令及其结果的所有历史记录的窗口 我知道有一个.bash_历史文件,但它只显示键入的命令,而不显示结果。 提前感谢。Bash的历史记录只存储执行的命令,而不存储它们的输出,并且只存储有限数量的命令(通常为500,由环境变

我在Mac(dev/prod)上使用了两个终端窗口,这两个窗口都显示了过去6个月的命令和结果历史记录(向上滚动),这对于定期运行命令和检查过去的错误非常有帮助

昨天我关掉了mac电脑并手动关闭了两个终端窗口,但今天打开终端时,它根本没有任何历史记录。有没有一种方法可以恢复包含过去命令及其结果的所有历史记录的窗口

我知道有一个.bash_历史文件,但它只显示键入的命令,而不显示结果。

提前感谢。

Bash的历史记录只存储执行的命令,而不存储它们的输出,并且只存储有限数量的命令(通常为500,由环境变量
HISTFILESIZE
定义)。这对你的处境没有帮助

从我看到的情况来看,终端似乎将保存窗口的状态(包括控制台历史记录)存储在目录
/Users//Library/Saved Application state/com.apple.Terminal.savedState/
中。只要终端窗口中出现新事件,就会实时修改此目录中的文件,除非我弄错了,否则应将其包含在time Machine备份中。因此,如果您可以从以前的备份中恢复此目录中的文件,您应该可以恢复您的历史记录。您甚至可以在该目录中尝试一些“文件取消删除”工具,尽管这些工具在OSX上非常罕见

这个过程应该是首先退出终端,然后恢复整个目录(例如使用Time Machine),然后简单地启动终端。这些保存的状态文件使用自定义二进制格式,只有终端程序本身才能读取该格式


顺便提一下,您可以随时从Shell菜单将终端窗口的内容保存到文本文件中,这一点可能值得一提。你可能会考虑定期做它,因为你的终端的历史似乎有一些重要的价值……

正如你提到的,只有命令历史被存储在BasHyScript中。他们的回答不会存储在任何地方。你用时间机器吗?如果是的话,也许可以试着回去几天看看你是否能看到这段历史。谢谢。您知道如何在终端窗口或任何其他应用程序中加载“window.data”文件吗?我在您提到的本地目录中找到了3个文件(“data.data”、“window\u 1.data”、“window\u 4.data”)。我注意到,每当我打开一个新的终端窗口时,就会创建一个新的“window_X.data”文件,当我关闭该终端时,它就会被删除。由于我现在只打开了一个终端窗口,有3个数据文件,可能其他的都有我以前的历史记录。这些数据文件似乎使用自定义二进制格式。我曾尝试对其进行反向工程,但没有成功。我不认识一个通用的压缩方案。据我所知,没有解析器。我所知道的有效加载其中一个文件的唯一方法是将其放在那里,然后启动终端……我有充分的理由相信,数据文件是使用苹果的
NSCoder
子类生成的,可能是某个“归档”编码器。如果您愿意编写一些目标C或Swift代码,您可能会成功地解码这些文件。如果您想以这种方式进行调查,请在谷歌上搜索
unarchiveObjectWithData
。。。