代码之家  ›  专栏  ›  技术社区  ›  TCSGrad

如何按时间顺序将tcsh历史定期备份到单个文件?

  •  1
  • TCSGrad  · 技术社区  · 16 年前

    1. 我的历史缓冲区仅存储2000行

    2. 与其擦除旧命令,不如将它们保存到“主”历史文件中,按时间顺序排列,即如果打开了两个外壳,则历史记录中输入的命令应按照日期戳排序(而不是外壳关闭的顺序)!

    3. 如果这个主历史文件可以自动备份(比如每周备份),那就太完美了。

    我相信很多狂热的shell用户都遇到过这样的情况——我希望从这样的用户中得到答案!!

    2 回复  |  直到 16 年前
        1
  •  1
  •   richq luc    16 年前

    2000年是相当低的。你可以在不受太多痛苦的情况下筹集相当数量的资金。

    接下来,您可能希望在注销时存储历史记录,因为这是将新命令添加到.history文件的时候。

    在$HOME中创建一个名为.logout的文件(对于bash用户,此文件为.bash\u logout)。在这种情况下,将历史记录的内容复制到永久存储区。例如:

    cat $HOME/.history >> $HOME/.ancient_history
    

    这将把历史附加到一个文件“.again_history”。对于bash用户,要复制的文件称为.bash\u history。

    然后创建一个cron作业,该作业会时不时地创建备份。首先,这里是一个在每天午夜后5分钟将文件移动到带有日期戳的文件名。

     5 0 * * *       mv $HOME/.ancient_history $HOME/.ancient_history_`date +%s`
    

    也许你可以用这个做更多的事情,但这就足够开始了。这是一个相当好的主意,我以前也没有想过要这么做:-)

        2
  •  1
  •   PurplePilot    16 年前

    从未想过要这么做,但最简单的方法是编写一个cron作业,将历史文件附加到另一个文件中。这样做的问题是,除非您在完成转储后编写cron清除历史文件,否则您将获得重复的文件。

    历史记录(据我所知)仅按行号存储,以便每个转储重复这些编号。但是,您可以添加一条标记线,标明倾倒日期。