我一直在我的 Mac(开发/产品)中使用两个终端窗口,两个窗口都显示了过去 6 个月工作的命令和结果历史记录(向上滚动),这对于运行定期命令和检查过去的命令非常有帮助错误。
昨天我关闭了我的Mac并手动关闭了两个终端窗口,但是今天打开终端时它根本没有历史记录。 有没有一种方法可以恢复窗口以及过去命令及其结果的所有历史记录?
我知道有一个 .bash_history 文件,但它只显示键入的命令,但不显示结果。
预先感谢。
Bash 的历史记录仅存储已执行的命令,而不存储其输出,并且仅存储有限数量的命令(通常为 500 个,由环境变量
HISTFILESIZE
定义)。这对你的情况没有帮助。
从我所看到的来看,终端存储保存窗口的状态(包括控制台历史记录)在目录
/Users/<user>/Library/Saved Application State/com.apple.Terminal.savedState/
中。每当终端窗口中发生新事件时,此目录中的文件都会被实时修改,除非我弄错了,否则应该包含在时间机器备份中。因此,似乎如果您可以从以前的备份中恢复此目录中的文件,您应该恢复您的历史记录。您甚至可以尝试该目录中的一些“文件取消删除”工具,尽管这些工具在 OS X 上相当罕见。
执行此操作的过程应该是首先退出终端,然后恢复整个目录(例如使用时间机器),然后只需启动终端即可。这些保存的状态文件使用自定义二进制格式,除了终端程序本身之外,您无法读取该格式。
顺便说一句,可能值得一提的是,您可以随时从 Shell 菜单将终端窗口的内容保存到文本文件。鉴于您的终端历史记录似乎具有一些重要价值,您可能会考虑在将来定期执行此操作...
如果使用 zsh 检查 /etc/zshrc 的历史文件位置,我的有
# Save command history
HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history
HISTSIZE=2000
SAVEHIST=1000
还要检查您的 ~/.zshrc 以防这些默认值已更改
在您喜欢的文本编辑器中打开
~/.zshrc
文件:
nano ~/.zshrc
将以下函数添加到
~/.zshrc
文件的末尾。该函数将采用一个参数作为搜索项并使用该参数执行命令。
search_history() {
local search_term="$1"
cat ~/.zsh_history | grep "$search_term"
}
为了使更改生效,您需要重新加载 ~/.zshrc 文件。您可以通过运行以下命令来完成此操作:
source ~/.zshrc
使用新功能:
现在您可以在终端中使用 search_history 函数来搜索任何您想要的搜索词。例如,要搜索 ssh,您可以运行:
search_history ssh