Ubuntu 16.04下.bash_history二进制文件恢复方法求助
恢复Ubuntu 16.04中被污染的.bash_history为可读文本
嘿,这个问题我之前也碰到过好几次——.bash_history突然变成二进制/十六进制格式确实挺闹心的。别慌,咱们一步步来把它恢复成正常的命令文本:
1. 先确认文件状态
首先运行这个命令,看看系统对该文件的判定:
file ~/.bash_history
如果输出显示类似 data 或者 binary file,说明文件确实被非文本数据污染了。
2. 提取可读文本(最稳妥的方法)
使用strings命令过滤掉文件中的非打印字符,只提取能正常显示的命令文本:
strings ~/.bash_history > ~/.bash_history_clean
完成后,用Sublime或者cat ~/.bash_history_clean查看新文件,你会发现大部分之前的终端命令都已经恢复成可读格式了。
3. 针对纯十六进制内容的修复
如果你的.bash_history完全是像你给出的那种连续十六进制字符(比如2d2a 0a73 7564 6f...),可以用xxd命令把十六进制转成原始文本:
xxd -r ~/.bash_history > ~/.bash_history_fixed
这个命令会直接将十六进制编码还原成对应的ASCII文本,比如你提供的那段十六进制会被转换成:
-* sudo apt-get repository ppa:graphics-drivers/ppa sudo add-apt
4. 替换原文件并生效
先务必备份原文件,防止操作失误:
cp ~/.bash_history ~/.bash_history.bak
然后把修复好的文件替换成原历史文件:
mv ~/.bash_history_clean ~/.bash_history # 或者用.bash_history_fixed,看哪个修复效果好
最后重启终端,或者运行以下命令让新的历史文件立即生效:
source ~/.bashrc
5. 预防后续问题
这种情况大多是因为误操作导致二进制数据写入了.bash_history,比如不小心把某个二进制程序的输出重定向到了这个文件(比如some_binary_cmd > ~/.bash_history)。以后操作时注意重定向的目标,避免覆盖或污染历史文件。
内容的提问来源于stack exchange,提问作者Beckik
相关产品推荐
相关产品推荐

