在Linux中不小心用rm命令删掉了重要文件简直太蛋疼了,以下是将rm命令重定义为移动到回收站的方法:
在用户文件夹username下新建脚本remove.sh:
#!/bin/bash
TRASH="/home/username/.local/share/Trash"
TRASH_FILES="$TRASH/files"
TRASH_INFO="$TRASH/info"
for i in $*; do
#忽略参数
TEMP=$i
TEST=${TEMP:0:1}
if [ $TEST == "-" ];then
continue
fi
#创建trashinfo文件
FileName=`basename $i`
echo "[Trash Info]" > "$TRASH_INFO/$FileName.trashinfo"
DPATH=`realpath $i`
echo "Path=$DPATH" >> "$TRASH_INFO/$FileName.trashinfo"
DDATE=`date +"%G-%m-%dT%T"`
echo "DeletionDate=$DDATE" >> "$TRASH_INFO/$FileName.trashinfo"
#将文件或文件夹移动到回收站
mv $i $TRASH_FILES/$fileName
done
在ubuntu16.04中,回收站的路径为 /home/username/.local/share/Trash/files,并且在/home/username/.local/share/Trash/info下存储被删文件的信息。
然后在 /home/username/.bashrc 中增加两条命令 alias rm="bash /home/free/remove.sh" alias sudo="sudo " 第一句是让我们自建的remove.sh代替rm命令,第二句是让这个替换关系在sudo时依然有效。
最后source ~/.bashrc就可以使之生效了(此脚本可以自动忽略rm的各种参数),删除和恢复都轻而易举。