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

时间:2009-12-23 12:29:04

标签: scripting backup history tcsh

我在工作中使用tcsh - 我广泛使用的一个功能是shell提示符下的命令行历史记录完成。目前,我已将历史文件的大小限制为2000(因为我不想太慢地减慢shell)。然而,有时我需要一个命令,我知道我已经使用了一两个月,但到现在已经被删除了。所以我想要一个系统,其中:

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

  2. 它们应该被保存到“主”历史文件中,按时间顺序排序,即如果打开了两个shell,那么在历史记录中输入的命令应按日期戳排序(不是炮弹关闭的顺序)!

  3. 如果这个主历史文件可以自动备份,比如每周一次,那将是完美的。

  4. 我确信很多狂热的shell用户都遇到过这样的情况 - 我希望得到其中一位用户的答案!!

2 个答案:

答案 0 :(得分:1)

从来没有想过这样做,但最简单的方法是编写一个将历史文件附加到另一个文件的cron作业。这样做的问题是你会得到重复项,除非你在执行转储后编写了cron来清除历史文件。

历史记录(据我所知)仅按行号存储,因此每个转储都会重复这些数字。但你冷添加一个带有转储日期的标记线。

答案 1 :(得分:1)

2000年相当低。你可以筹集到相当数量而不会遭受太多痛苦。

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

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

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

这会将历史记录附加到文件“.ancient_history”。对于bash用户,要复制的文件称为.bash_history。

然后创建一个cron作业,每隔一段时间创建一个这样的备份。对于初学者来说,这里是一个将文件移动到文件名的文件名,每天午夜5点钟都有日期戳。

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

你可以做更多的事情,但这足以开始。这是一个非常好的想法,我之前没想过要做的事情: - )