目錄
事情是這樣的
Linux命令列實作回收站功能
1、創建回收站檔案夾
2、重新一下rm命令
3、重寫rm完整腳本
4、立即生效
5、測驗洗掉
6、回收站定期洗掉
7、真實洗掉命令在哪呢?
送給運維小姐姐的回收站
事情是這樣的
運維組新來了的一個小姐姐,在服務器上玩命令列,誤刪了一個重要的組態檔,

本來是件挺嚴重的事,但她淚眼汪汪的看著我,真的不忍心責怪

只能硬著頭皮,翻檔案 七拼八湊一下午 才把檔案內容找回來

不能讓她在服務器上過于奔放,只能找個方法限制她,

Linux命令列實作回收站功能
rm -rf 是一個極其危險的操作,而且Linux端不像windows,有回收站的的后悔藥可以吃,
所以一旦誤操作,就有可能造成不可挽回的后果,
1、創建回收站檔案夾
創建一個路徑來作為我們的回收站:cd ~ && mkdir .trash
#/root/.trash路徑,即作為我們的回收站路徑
當然,這里要注意你磁區空間的情況,這個回收站位置,生產環境盡量放在空間較大的磁區下,
如果,只是自己玩玩,可以隨便放,
2、重新一下rm命令
在.bashrc中重寫洗掉命令的代碼
賦予最高權限:chmod 777 .trash
修改你的 home 目錄下的:.bashrc:vim ~/.bashrc
3、重寫rm完整腳本
# rm transform
function rm() {
# 定期清理回收站,時間可調整
now=$(date +%s)
for s in $(ls --indicator-style=none $HOME/.trash/) ;do
dir_name=${s//_/-}
dir_time=$(date +%s -d $dir_name)
# if big than one month then delete
if [[ 0 -eq dir_time || $(($now - $dir_time)) -gt 2592000 ]] ;then
echo "Trash " $dir_name " has Gone "
/bin/rm $s -rf
fi
done
# 重寫rm命令,將檔案mv到回收站下
prefix=$(date +%Y_%m_%d)
hour=$(date +%H)
mkdir -p $HOME/.trash/$prefix/$hour
if [[ -z $1 ]] ;then
echo 'Missing Args'
return
fi
echo "Hi, 小姐姐 " ${!#} "已被移到回收站了呢~"
mv ${!#} $HOME/.trash/$prefix/$hour
}
4、立即生效
source ~/.bashrc
#使組態檔立即生效,最后 我們來做一下測驗
5、測驗洗掉
#創建測驗檔案
[root@mail ~]# touch test.txt
#使用rm -rf 洗掉該檔案
[root@mail ~]# rm -rf test.txt
Hi, 小姐姐 test.txt 已被移到回收站了呢~
#創建測驗檔案
[root@mail ~]# touch aaa.txt
#使用rm 洗掉該檔案
[root@mail ~]# rm aaa.txt
Hi, Trashing aaa.txt to /root/.trash
#查看一下回收站里的檔案,已經被成功移過來了
[root@mail ~]# ll /root/.trash/2020_07_17/17/
total 0
-rw-r--r-- 1 root root 0 Jul 17 17:16 222
-rw-r--r-- 1 root root 0 Jul 17 17:36 aaa.txt
-rw-r--r-- 1 root root 0 Jul 17 17:14 eeee
-rw-r--r-- 1 root root 0 Jul 17 17:36 test.txt
現在我們洗掉一個測驗檔案:
rm a.txt 或者 rm -rf aaa.txt
會顯示:Hi, 小姐姐 aaa.txt 已被移到回收站了呢~
6、回收站定期洗掉
因為我們上面的 shell 每次觸發 rm 命令的時候都會去洗掉一個月前的目錄,
所以就不需要定時器來洗掉 .trash 里面的檔案了,
當然,你也可以不用定期洗掉,
選擇手動去清慷訓收站
7、真實洗掉命令在哪呢?
如果強制清空"回收站"(即清空 .trash 目錄),
可以使用真正的 rm 命令:/bin/rm -rf ~/.trash/*
送給運維小姐姐的回收站
做一個回收站送給愛洗掉的你
從今以后,你的洗掉 我接盤了

rm -rf 你隨便用,你玩洗掉的時候,已經不是洗掉了~emmm

歡迎關注微信公眾號:hacklex

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275898.html
標籤:其他
