You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从当前运行的bash会话中恢复被截断的原始历史记录

操作前提

绝对不要关闭这个在截断操作前就打开的bash会话,所有操作均在该会话内执行。

步骤1:临时调整会话历史配置,避免旧记录被清理

先执行2条命令,确保内存中的历史不会被自动截断:

# 调大当前会话的内存历史存储上限,防止旧记录被自动清除
HISTSIZE=100000
# 设置历史输出格式为带Unix时间戳的形式,方便后续转换
HISTTIMEFORMAT='@%s '

步骤2:导出内存中全量历史记录

执行以下命令导出所有内存中的历史条目到临时文件:

# history 1 表示输出从第1条开始的所有历史,避免默认截断
history 1 > full_history.tmp

导出的full_history.tmp里前300条是你后续新执行的命令,301条及之后就是你要恢复的旧历史记录。

步骤3:转换为要求的格式并提取旧历史

执行awk命令直接处理导出的文件,跳过前300条新记录,输出你需要的时间戳格式:

awk 'NR>300 {
    sub(/@/, "", $2)
    print "#" $2
    $1 = $2 = ""
    print substr($0, 3)
}' full_history.tmp > restored_history

如果你后续新执行的命令条数不是300,可以自行修改上面命令里的NR>300的阈值,跳过不需要的新条目即可。

步骤4:合并回bash历史文件(可选)

如果需要把恢复的历史永久加入你的bash历史,执行以下命令追加到历史文件(不要直接覆盖,避免现有内容丢失):

cat restored_history >> ~/.bash_history

最后执行head restored_history验证输出符合要求即可。


内容的提问来源于stack exchange,提问作者precompute

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:27:02