当我打开 .zsh_history 文件时,我发现历史记录中的一些非 ASCII 字符具有奇怪的编码或类似的内容。
\n这是一个最小的例子:
\n首先,.zshrc是
# zshrc\nHISTSIZE=10000\nSAVEHIST=10000\nHISTFILE=~/.zsh_history\nRun Code Online (Sandbox Code Playgroud)\n我用汉字输入了一些命令,exec zsh以保存历史记录并读取.zsh_history文件。
# zshrc\nHISTSIZE=10000\nSAVEHIST=10000\nHISTFILE=~/.zsh_history\nRun Code Online (Sandbox Code Playgroud)\n结果被一些随机的奇怪字符替换。
\necho \xe5\xad\x83\xe4\xb8\xb2\xe6\xb8\xac\xe8\xa9\xa6 \xe4\xb8\x80\xe4\xba\x83\xe4\xb8\x83\nexec zsh\nRun Code Online (Sandbox Code Playgroud)\n\n另外,当我使用 vim 或任何文本编辑器打开此文件时,它会使用latin1编码打开此文件并显示以下内容:
echo \xc3\xa5\xc2\xad\xc2\xb7\xc3\xa4\xc2\xb8\xc2\xb2\xc3\xa6\xc2\xb8\xc2\xac\xc3\xa8\xc2\xa9\xc2\xa6 \xc3\xa4\xc2\xb8\xc3\xa4\xc2\xba\xc2\xac\xc3\xa4\xc2\xb8\xc2\xa9\nexec zsh\nRun Code Online (Sandbox Code Playgroud)\n\n我找不到解决此问题的选项,我猜这是一个编码问题。\n如何强制 zsh 以 utf-8 编码保存历史记录,或者还有其他方法可以解决此问题?
\n我发现这个https://www.zsh.org/mla/users/2011/msg00154.html 似乎这种行为是有意的。
回复说
这不是一个错误,历史文件以元格式保存。如果您想在 zsh 之外打印它,您可以使用这个简单的程序。
...(一个简单的 C 程序)
我想在 zsh shell 中浏览历史记录的更好方法是fc -l -i 1 | vim -。(也许man zshbuiltins有更多选择)