Scripting 如何按时间顺序将tcsh历史定期备份到单个文件?
我在工作中使用tcsh—我广泛使用的特性之一是在shell提示符下完成命令行历史记录。目前,我已将历史文件的大小限制为2000(因为我不想让shell速度过慢)。然而,有时我需要一个命令,我知道我已经用了一两个月了,但现在已经被删除了。所以我想要一个系统,其中:Scripting 如何按时间顺序将tcsh历史定期备份到单个文件?,scripting,backup,history,tcsh,Scripting,Backup,History,Tcsh,我在工作中使用tcsh—我广泛使用的特性之一是在shell提示符下完成命令行历史记录。目前,我已将历史文件的大小限制为2000(因为我不想让shell速度过慢)。然而,有时我需要一个命令,我知道我已经用了一两个月了,但现在已经被删除了。所以我想要一个系统,其中: 我的历史缓冲区仅存储2000行 与其擦除旧命令,不如将它们保存到“主”历史文件中,按时间顺序排列,即如果打开了两个外壳,则历史记录中输入的命令应按照日期戳排序(而不是外壳关闭的顺序) 如果这个主历史文件可以自动备份(比如每周备份),那就
我相信很多狂热的shell用户都遇到过这样的情况——我希望从这样的用户中得到答案 从未想过要这么做,但最简单的方法是编写一个cron作业,将历史文件附加到另一个文件中。这样做的问题是,除非您在完成转储后编写cron清除历史文件,否则您将获得重复的文件
历史记录(据我所知)仅按行号存储,以便每个转储重复这些编号。但是,您可以添加一个带有转储日期的标记线。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`
也许你可以用这个做更多的事情,但这就足够开始了。这是一个我以前也没有想到过的好主意:-)我真的怀疑在2000个条目之后它会变得明显慢。实际上,上面的答案非常简单,让历史记录10000行。或者逐渐变大,直到你看到减速。