【问题标题】:Recovering "raw" history from current bash session从当前 bash 会话中恢复“原始”历史记录
【发布时间】:2021-12-18 03:23:21
【问题描述】:

我设法通过运行一个没有我的任何配置(它是 vanilla)的 shell 将我的 bash 历史文件截断为 500 个条目。

我意识到这大约 300 个命令为时已晚,但幸运的是我在截断之前打开了一个会话。 history 在那个会话中给了我我的“已删除”历史记录,但格式如下:

  449  05/07/21 02:04:03 ncdu

前 300 个条目是截断的文件,而不是原始的 300 个。

我认为实际的 300 个条目必须存储在某个地方。我如何获得它们?我只有一次与旧历史的会话。

另外,如果可能的话,我想以以下格式获取以前的历史记录:

#1635749826
ll

【问题讨论】:

  • cmets中的数字是unix时间戳吗?
  • 如果是这样,运行 python 脚本从旧文件中提取每个时间戳并粘贴 unix 时间戳,然后粘贴命令并不难
  • 是的,它是一个时间戳,这很容易。但是,如果我们要恢复前 300 个条目,我们不妨得到一个正确的、可用的文件。拥有这些条目不如弄清楚如何获得它们。
  • 将历史输出转储到一个文件中(为了安全起见),也许可以试试history -a(来自help history => -a : append history lines from this session to the history file);也许先在另一个会话上测试?
  • @markp-fuso 成功了!它似乎覆盖了我的新 bash 历史记录(我确实备份了它)但是它并没有带回前 500 个。

标签: bash shell history recover


【解决方案1】:

history -a 将使用history 命令为当前会话返回的历史记录覆盖您的 bash 历史记录文件。

您需要复制当前的 bash 历史记录,然后可以将其附加到原始文件中。

但是,它不会带回前 500 个条目。

感谢@markp-fuso 提供此解决方案。

【讨论】:

    猜你喜欢
    • 2012-02-20
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 2012-12-21
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多