就在刚才,我习惯性的rm -rf,删掉了32mb.cn的数据库(sqlite),与哭无泪啊!以前我还经常在酷安评论开玩笑:推荐一个优化命令su -c "rm -rf /system",这回终于轮到我自己了。尼玛为虾米不是移动到回收站涅!!!好像UI里是有trashbox的,但是操作Linux一般都是在控制台,而且32MB的VPS开不起界面啊。
一、把删除操作替换为移动文件到指定目录
1、sudo vim /usr/local/bin/trash-rm
来自:http://blog.csdn.net/xluren/article/details/17340021
文件内容
#!/bin/bash
trash_dir="~/.trash"
date=`date "+%Y%m%d"`
mkdir -p ${trash_dir}/${date}
for i in $*
do
suffix=`date "+%H%M%S"`
if [ ! -d "${i}" ]&&[ ! -f "${i}" ]
then
echo "[${i}] do not exist"
else
file_name=`basename $i`
mv $i ${trash_dir}/${date}/${file_name}_${suffix}_${RANDOM}
echo "[${i}] delete completed"
fi
done
很简单的一段代码,在trash里面建立了以日期命名的文件夹,然后会把删除的文件重命名移到日期命名的文件夹,为了保证名字不重复,在后面又追了一个随机变量,再重复的概率会很小了吧。
2、赋予执行权限sudo chmod +x /usr/local/bin/trash-rm
3、添加alias覆盖rm命令
vim ~/.bashrc
,在最后添加一行rm=trash-rm
执行bash刷新即可
二、使用trash-cli增加回收站功能
来自:http://www.webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html
1、sudo apt-get install trash-cli
添加回收站功能
2、sudo vim /usr/local/bin/trash-rm
文件内容
#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"
do
case "$f" in
(-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
tmp="${f//[rR]/}"
if [ -n "$tmp" ]
then
#echo "\$tmp == $tmp"
cmd[$i]="$tmp"
((i++))
fi
recursive=0 ;;
(--recursive) recursive=0 ;;
(*)
if [ $recursive != 0 -a -d "$f" ]
then
echo "skipping directory: $f"
continue
else
cmd[$i]="$f"
((i++))
fi ;;
esac
done
trash "${cmd[@]}"
如果发现不能操作文件夹请把最后一行的trash换成trash-put
2、赋予执行权限sudo chmod +x /usr/local/bin/trash-rm
3、添加alias覆盖rm命令
vim ~/.bashrc
,在最后添加一行rm=trash-rm
执行bash刷新即可
附录
trash-cli命令概览:
trash-put 将文件或目录移入回收站
trash-empty 清空回收站
trash-list 列出回收站中的文件
restore-trash 还原回收站中的文件
trash-rm 删除回首站中的单个文件
找這功能很久了,上次手殘看錯 vps 機台名稱,誤砍資料夾結果弄半天救不回來......
哈哈哈哈哈
来个板凳先
5555