没有日志,但如果你想要......
您可以在递归和监视模式下使用inotify库:
inotifywait -e delete --timefmt %c --format '%T %_e %w %f' -r -m / >/path/logfile
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
Fri Jul 19 11:57:39 2013 DELETE /tmp/ testfiletodelete
Fri Jul 19 11:57:46 2013 DELETE /home/user/ testfiletodelete
Run Code Online (Sandbox Code Playgroud)
这是一种系统管理员方法:所有用户、所有目录和安装点...
警告这可能有点矫枉过正,请仔细阅读手册页并添加一些选项,例如--exclude
rm命令你可以添加一些东西到你的.bashrc...
rm 从删除转变为移至垃圾箱命令mkdir -p $HOME/.Trashcan
rm() {
local destdir=$(mktemp -d $HOME/.Trashcan/trash-XXXXXXXXX);
mkdir $destdir/files
echo $0 $@ >$destdir/command
set >$destdir/environ
mv -t $destdir/files $@
}
Run Code Online (Sandbox Code Playgroud)
因此,每次您输入rmbash 时,文件都会被移动到一个目录,命令和环境也会被保存。
由于每个目录rm都会创建一个日期正确的新目录,因此无需使用date.
rm。但如果您只想在用户级别记录您的操作:
rm() {
date >>$HOME/.rm.log +"%a %d %b %Y %T: rm $@"
/bin/rm $@
}
Run Code Online (Sandbox Code Playgroud)
可以完成这项工作。
注释1
正如 @slhck 正确所说:重新定义常用命令可能会给新用户带来不好的习惯,因此,如果您修改此类标准命令,当您在另一个系统上工作时,一定不要忘记这一点!
诺塔2
此补丁仅rm由交互式用户 shell 运行的命令。您可以编辑/etc/bashrc以使它们适用于所有用户,但只有bash工具才会受到影响。
unlink如果示例中删除了文件perl,则不会对此进行记录。
或者即使调用ksh, dashor else 而不是 bash...也没有日志。
诺塔3
为了访问原始命令,而不是alias个人命令function,您必须精确的完整路径: /bin/rm myfile将删除myfile但绕过rm功能,不会记录任何内容。