Linux下如何避免误操作执行 rm
轉(zhuǎn)載自?Linux下如何避免誤操作執(zhí)行 rm
最近IT圈子流行著一個段子:
某個蠢萌的程序員,不小心在公司的服務(wù)器上輸入了?rm -rf/?指令,結(jié)果......現(xiàn)在還沒出獄呢。
當(dāng)然,絕大部分程序員不可能犯下如此低級的錯誤,更何況也沒有執(zhí)行權(quán)限。
但是,Linux下有些指令非常重要,或者說非常危險,rm就是其中之一,無論跟什么參數(shù),需要的是謹(jǐn)慎的操作,以下就是個真實(shí)的教訓(xùn):
1.vi編輯文件的時候,需要執(zhí)行":w"退出,但是w和~的鍵位非常近,輸入":w ~"指令,于是當(dāng)前路徑,創(chuàng)建了一個名稱"~"文件。
-rw-r--r--. 1 oracle oinstall??? 2 Feb? 1 01:10 ~
2.?刪除文件,執(zhí)行rm指令,
$ rm ~
回車下來,一直hang,以為出現(xiàn)問題了,于是執(zhí)行ctrl+c。
3.一會在看用戶家目錄,發(fā)現(xiàn)原來存儲的文件,怎么找不著了?開始以為有人誤刪除了,于是使用last,查看歷史登錄的用戶信息,發(fā)現(xiàn)只有自己。
4.使用history看下歷史執(zhí)行的指令,
...
210 rm ~
211 ls -rlht
212 rm -rf ~
...
5.?此時恍然大悟,忘記了"~"的含義,
$ echo ~
/home/user
其實(shí)"~"代表了用戶的家目錄,之所以(2)出現(xiàn)了hang,因?yàn)榧夷夸浵掠形募?#xff0c;刪除需要時間,如果文件較小,執(zhí)行rm可以立即看見提示,
$ rm ~
rm: cannot remove `/home/user': Is a directory
由于~代表家目錄,因此是一個文件夾不是文件,所以直接使用rm提示錯誤,需要-rf參數(shù),此時用戶家目錄下未被刪除,
$ rm -rf ~
rm: cannot remove `/home/user': Permission denied
此時雖然會提示錯誤,但當(dāng)前用戶家目錄下,所有的文件均已被刪除,只是因?yàn)闄?quán)限不能刪除/home/user,如果此時用的root,我猜就可以執(zhí)行。
因此可以任意執(zhí)行指令rm,是非常危險的一件事情,極有可能讓你誤操作,甚至未反應(yīng)過來,有什么方法可以避免?
一個是要建立這種意識,就是執(zhí)行這種特殊指令前,不要急于回車,靜下來一兩秒,再做操作,但說起來容易,做起來難,不是一朝一夕,就能建立。
另一個是可以通過技術(shù)手段,降低執(zhí)行rm的誤操作程度,網(wǎng)上有不少方法,其中一種方法,就是建立類似回收站機(jī)制:
1.?用戶家目錄下,建立隱藏文件夾.trash,
$ mkdir .trash
2.?創(chuàng)建remove.sh腳本,實(shí)現(xiàn)邏輯簡單,
$ vi remove.sh
//定義文件夾目錄.trash
TRASH_DIR="/home/user/.trash"
for i in $*; do
??? //定義秒時間戳
??? STAMP=`date +%s`
??? //得到文件名稱(非文件夾),參考man basename
??? fileName=`basename $i`
??? //將輸入的參數(shù),對應(yīng)文件mv至.trash目錄,文件后綴,為當(dāng)前的時間戳
??? mv $i $TRASH_DIR/$fileName.$STAMP
done
3.?修改.bashrc,增加一行,
# User specific aliases and functions
alias rm="sh /home/user/tool/remove.sh"
即設(shè)置一個rm同名alias。
4.?此時執(zhí)行rm,
$ rm 1
進(jìn)入隱藏文件夾,
$ cd .trash
檢索當(dāng)前路徑,
$ ls
1.1517500702
其實(shí)執(zhí)行rm 1,只是將文件1執(zhí)行mv,存儲于隱藏目錄.trash,并用時間戳改名,需要的時候可以直接恢復(fù),實(shí)現(xiàn)回收站機(jī)制。
5.?當(dāng)然目錄.trash,需要控制容量,一種方法,是可以寫個定時任務(wù),要是智能一些,就可以判斷文件夾的容量,超過閾值,就執(zhí)行清理操作,要是粗暴一些,可以每日定時執(zhí)行清理,例如,
0 0 * * * rm -rf /home/user/.trash/*
每日00:00定時執(zhí)行,清空隱藏目錄.trash。
對于Linux下的一些重要指令,首先要有敬畏,意識上建立起謹(jǐn)慎的態(tài)度,其次可以使用一些技術(shù)手段,限制這些誤操作,方法可能不少,重要的是,找到符合自己的需求,達(dá)到避免誤操作的目的,這是需要積累的經(jīng)驗(yàn)。
最近IT圈子流行著一個段子:
某個蠢萌的程序員,不小心在公司的服務(wù)器上輸入了?rm -rf/?指令,結(jié)果......現(xiàn)在還沒出獄呢。
當(dāng)然,絕大部分程序員不可能犯下如此低級的錯誤,更何況也沒有執(zhí)行權(quán)限。
但是,Linux下有些指令非常重要,或者說非常危險,rm就是其中之一,無論跟什么參數(shù),需要的是謹(jǐn)慎的操作,以下就是個真實(shí)的教訓(xùn):
1.vi編輯文件的時候,需要執(zhí)行":w"退出,但是w和~的鍵位非常近,輸入":w ~"指令,于是當(dāng)前路徑,創(chuàng)建了一個名稱"~"文件。
-rw-r--r--. 1 oracle oinstall??? 2 Feb? 1 01:10 ~
2.?刪除文件,執(zhí)行rm指令,
$ rm ~
回車下來,一直hang,以為出現(xiàn)問題了,于是執(zhí)行ctrl+c。
3.一會在看用戶家目錄,發(fā)現(xiàn)原來存儲的文件,怎么找不著了?開始以為有人誤刪除了,于是使用last,查看歷史登錄的用戶信息,發(fā)現(xiàn)只有自己。
4.使用history看下歷史執(zhí)行的指令,
...
210 rm ~
211 ls -rlht
212 rm -rf ~
...
5.?此時恍然大悟,忘記了"~"的含義,
$ echo ~
/home/user
其實(shí)"~"代表了用戶的家目錄,之所以(2)出現(xiàn)了hang,因?yàn)榧夷夸浵掠形募?#xff0c;刪除需要時間,如果文件較小,執(zhí)行rm可以立即看見提示,
$ rm ~
rm: cannot remove `/home/user': Is a directory
由于~代表家目錄,因此是一個文件夾不是文件,所以直接使用rm提示錯誤,需要-rf參數(shù),此時用戶家目錄下未被刪除,
$ rm -rf ~
rm: cannot remove `/home/user': Permission denied
此時雖然會提示錯誤,但當(dāng)前用戶家目錄下,所有的文件均已被刪除,只是因?yàn)闄?quán)限不能刪除/home/user,如果此時用的root,我猜就可以執(zhí)行。
因此可以任意執(zhí)行指令rm,是非常危險的一件事情,極有可能讓你誤操作,甚至未反應(yīng)過來,有什么方法可以避免?
一個是要建立這種意識,就是執(zhí)行這種特殊指令前,不要急于回車,靜下來一兩秒,再做操作,但說起來容易,做起來難,不是一朝一夕,就能建立。
另一個是可以通過技術(shù)手段,降低執(zhí)行rm的誤操作程度,網(wǎng)上有不少方法,其中一種方法,就是建立類似回收站機(jī)制:
1.?用戶家目錄下,建立隱藏文件夾.trash,
$ mkdir .trash
2.?創(chuàng)建remove.sh腳本,實(shí)現(xiàn)邏輯簡單,
$ vi remove.sh
//定義文件夾目錄.trash
TRASH_DIR="/home/user/.trash"
for i in $*; do
??? //定義秒時間戳
??? STAMP=`date +%s`
??? //得到文件名稱(非文件夾),參考man basename
??? fileName=`basename $i`
??? //將輸入的參數(shù),對應(yīng)文件mv至.trash目錄,文件后綴,為當(dāng)前的時間戳
??? mv $i $TRASH_DIR/$fileName.$STAMP
done
3.?修改.bashrc,增加一行,
# User specific aliases and functions
alias rm="sh /home/user/tool/remove.sh"
即設(shè)置一個rm同名alias。
4.?此時執(zhí)行rm,
$ rm 1
進(jìn)入隱藏文件夾,
$ cd .trash
檢索當(dāng)前路徑,
$ ls
1.1517500702
其實(shí)執(zhí)行rm 1,只是將文件1執(zhí)行mv,存儲于隱藏目錄.trash,并用時間戳改名,需要的時候可以直接恢復(fù),實(shí)現(xiàn)回收站機(jī)制。
5.?當(dāng)然目錄.trash,需要控制容量,一種方法,是可以寫個定時任務(wù),要是智能一些,就可以判斷文件夾的容量,超過閾值,就執(zhí)行清理操作,要是粗暴一些,可以每日定時執(zhí)行清理,例如,
0 0 * * * rm -rf /home/user/.trash/*
每日00:00定時執(zhí)行,清空隱藏目錄.trash。
對于Linux下的一些重要指令,首先要有敬畏,意識上建立起謹(jǐn)慎的態(tài)度,其次可以使用一些技術(shù)手段,限制這些誤操作,方法可能不少,重要的是,找到符合自己的需求,達(dá)到避免誤操作的目的,這是需要積累的經(jīng)驗(yàn)。
總結(jié)
以上是生活随笔為你收集整理的Linux下如何避免误操作执行 rm的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双机热备的原理
- 下一篇: Linux下查找命令