是否可以将特定用户的历史记录存储在除HISTFILE中提到的默认文件之外的另一个文件中? 我希望作为备份文件,如果主文件被删除,让它像一个备份。如何在Linux中的两个文件中有历史记录
Regards, Sriharsha Kalluru。
是否可以将特定用户的历史记录存储在除HISTFILE中提到的默认文件之外的另一个文件中? 我希望作为备份文件,如果主文件被删除,让它像一个备份。如何在Linux中的两个文件中有历史记录
Regards, Sriharsha Kalluru。
您可以创建一个硬链接到文件
cp --link --verbose /home/$USER/.bash_history /somewhere/else/users_history
当在他家原来的文件被删除的文件仍然存在,并保留丢失的内容。
请注意,尽管只有其中一个名称被删除,硬链接才会保留文件内容。如果某个进程覆盖或以其他方式损坏了该文件,则它也会影响该链接的名称。 – bigendian
@bigendian:这是正确的。我只提出这个解决方案,因为它完全匹配OP的文件被删除的场景。感谢您的澄清! –
我会写一个cronjob,每分钟左右将原始的场景复制到备份位置。您不必担心定义第二个histfile。 否则你写的每一个命令的用户输入,以这种方法一个备用文件 看看这里:
bash, run some command before or after every command entered from console
有趣的链接! – heltonbiker
很多时候,我发现自己用Ctrl-R在Bash中得到旧的命令终端宽度的四倍,只是为了发现已经过了很多天,并且它不再位于.bash_history文件中。这里有两行将跟踪你在bash提示符下键入的每个命令行,并且根本不使用外部进程,只是纯粹的bash。
我对这个问题的第一种方法是将历史上的最大行数增加到非常大的数量。但不管它有多大,总会有一段时间,我需要一个长达几个月前输入的长命令,它已经离开了历史。当我了解PROMPT_COMMAND变量时,当前的解决方案出现在我的脑海中,这是一个在显示每个提示之前bash执行的命令。这里有两条线:
export HISTTIMEFORMAT="%s "
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; }"'echo $$ $USER \
"$(history 1)" >> ~/.bash_eternal_history'
一个目标我开始对自己是为了实现它,而无需使用任何外部的过程,所以庆典就不必每次输入AT其迅速按下后,一个新的进程。第一行将历史行的格式设置为将日期包含为Unix时间戳,因此您现在可以在键入每条命令时进行输入。第二行,这是解决方案的核心,首先确保的是,如果以前的PROMPT_COMMAND设置,它就会被我们的东西之前执行,然后会将一行格式:
PID USER INDEX TIMESTAMP COMMAND
到一个名为文件。当前用户主页中的bash_eternal_history。
添加用户名似乎并不需要,后来在“sudo -s”会话和保留“〜/”相同值的正常会话之间变得有用,因此将行附加到相同的.bash_eternal_history文件。
我希望你们中的一些人发现这两条线和我一样有用。 :-)
嗨,谢谢你提供的信息,这是我需要的信息,但是如果我们输入一个空命令,那么以前的命令将存储在永久文件中。所以请让我知道如果有什么方法可以超过这个。 –
什么历史? –
我觉得这是bash shell,你能确认一下吗? – Kimvais
对不起,迟到的回应。是的,它是一个bash shell。 –