每天一個linux命令:rm
更多精彩請關注:www.zicreate.com
1.命令功能
rm 即 remove files or directories,刪除文件或目錄命令,也可以將某個目錄及其下屬的所有文件及其子目錄均刪除掉。對於鏈接文件,只是刪除整個鏈接文件,而原有文件保持不變。
注意:使用rm命令要格外小心。因爲一旦刪除了一個文件,就無法再恢復它。所以,在刪除文件之前,最好再看一下文件的內容,確定是否真要刪除。rm命令可以用”-i”選項,這個選項在使用文件擴展名字符刪除多個文件時特別有用。使用這個選項,系統會要求你逐一確定是否要刪除。這時,必須輸入y並按Enter鍵,才能刪除文件。如果僅按Enter鍵或其他字符,文件不會被刪除。
新手注意:rm -rf *
刪除當前目錄下的所有文件,這個命令很危險,應避免使用。
2.命令格式
rm (選項)(參數)
3.命令參數
-d:直接把欲刪除的目錄的硬連接數據刪除成0,刪除該目錄;
-f:強制刪除文件或目錄;
-i:刪除已有文件或目錄之前先詢問用戶;
-r或-R:遞歸處理,將指定目錄下的所有文件與子目錄一併處理;
--preserve-root:不對根目錄進行遞歸操作;
-v:顯示指令的詳細執行過程。
4.使用場景
rm 命令非常簡單,後面直接跟文件或目錄即可。
常見操作如下:
rm file.txt # 刪除一個文件;
rm -r /tmp/test # 刪除一個目錄;
rm -rf /tmp/test/* # 刪除目錄下的所有文件;這個命令的危險之處就在於有時操作太快而稍不留意命令就會變成:“rm -rf /tmp/test/ [空格] *”!!!這種情況下將會刪除/tmp/test/還有rm命令執行目錄下的所有文件。如果rm命令是在“/”根目錄下執行的,那麼整個系統就完了。
rm *.txt # 刪除當前目錄下所有的txt文件
rm test[1-3].txt # 刪除當前目錄下的test1.txt test2.txt test3.txt;
rm test{1,3,4}.txt # 刪除當前目錄下的test1.txt test3.txt test4.txt;
關於上面命令中通配符的講解在前期的文章中已經有所涉及,本文不再詳解。
擴展
(1)rmdir
rmdir 刪除空目錄,一個目錄被刪除之前必須是空的。如果目錄非空會報錯。
命令格式
rmdir (命令參數) 目錄名
命令參數
-p或--parents:刪除指定目錄後,若該目錄的上層目錄已變成空目錄,則將其一併刪除;
--ignore-fail-on-non-empty:此選項使rmdir命令忽略由於刪除非空目錄時導致的錯誤信息;
-v或-verboes:顯示命令的詳細執行過程;
使用場景
$ rmdir /tmp/test/subdir
這個命令我基本沒用過,因爲 rm 已經可以完成目錄刪除工作了。
(2)配合find使用
在目錄/tmp/test/ 下面查找文件名爲”test*.txt” 類型的文件並刪除:
$ find /tmp/test/ -iname “test*.txt” -exec rm {} \;
find 爲查找命令,後期文章將會詳解。
(3)自定義回收站功能
爲了防止錯誤刪除文件,保證所有用戶都能將 rm 命令刪除的文件先放入回收站,可以在/etc/profile文件最後添加如下代碼:
mkdir -p ~/.trash
alias rm=trash
trash()
{
echo "File move to ~/.trash/"
mv $@ ~/.trash/
}
修改後執行 # source /etc/profile
重載環境變量,使修改生效(此需要root權限)。使用此種方法之後,rm 命令的各種命令參數選項就不再有效了。
如果是隻想修改自己的rm命令,則修改“~/.bashrc”,同樣在文件最後添加上面的代碼。如果該文件中有“alias rm=’rm -i’”這樣的代碼,則註釋掉該行(修改爲“#alias rm=’rm -i’”)。
修改後執行 # source /etc/profile
重載環境變量。
演示如下:
# touch test1.txt test2.txt test3.txt test4.txt
# rm *
# ls /root/.trash/
test1.txt test2.txt test3.txt test4.txt
如果要清空回收站可以使用如下方法:
方法1:
$ /bin/rm -rf ~/.trash/*
方法2:
$ \rm -rf ~/.trash/*
方法3:
$ unaslias rm #(這只是臨時取消rm的別名)
$ rm -rf ~/.trash/*