每天一個linux命令(5):rm 命令
昨天學習(xi)了(le)創(chuang)建(jian)文件和(he)目(mu)錄的(de)命(ming)令(ling)mkdir ,今天學習(xi)一(yi)下linux中(zhong)刪除文件和(he)目(mu)錄的(de)命(ming)令(ling): rm命令(ling)。rm是常用的(de)命令,該命令的(de)功能為刪(shan)除(chu)一(yi)個(ge)(ge)目(mu)錄(lu)中的(de)一(yi)個(ge)(ge)或多個(ge)(ge)文(wen)件(jian)(jian)或目(mu)錄(lu),它也可以將某個(ge)(ge)目(mu)錄(lu)及其下的(de)所有文(wen)件(jian)(jian)及子目(mu)錄(lu)均(jun)刪(shan)除(chu)。對于鏈接(jie)文(wen)件(jian)(jian),只是刪(shan)除(chu)了鏈接(jie),原有文(wen)件(jian)(jian)均(jun)保(bao)持(chi)不變。
rm是一個(ge)危(wei)險的命(ming)(ming)令(ling),使用的時(shi)候要特別當心,尤其對于(yu)新手,否則整個(ge)系統就(jiu)會(hui)毀在(zai)這個(ge)命(ming)(ming)令(ling)(比如在(zai)/(根目(mu)錄)下(xia)執(zhi)行(xing)rm * -rf)。所以,我(wo)們在(zai)執(zhi)行(xing)rm之前最(zui)好先確認(ren)一(yi)下(xia)在(zai)哪個(ge)目錄,到(dao)底要刪除什么東(dong)西,操作時(shi)保持高度清醒的頭腦。
1.命令格式:
rm [選項] 文件…
2.命令功能:
刪除一(yi)個目錄中的一(yi)個或(huo)多個文(wen)件或(huo)目錄,如果(guo)沒有使用- r選項,則rm不會刪(shan)除目錄。如果(guo)使用 rm 來刪(shan)除文(wen)(wen)件(jian),通常仍(reng)可以將該(gai)文(wen)(wen)件(jian)恢復原狀。
3.命令(ling)參數:
-f, --force 忽略(lve)不存(cun)在的(de)文件,從不給出提示。
-i, --interactive 進(jin)行交互式刪(shan)除
-r, -R, --recursive 指示rm將參數(shu)中列出的全(quan)部目錄和(he)子目錄均遞歸地刪除。
-v, --verbose 詳細顯示進(jin)行的步(bu)驟
--help 顯示此幫助信息并退出(chu)
--version 輸(shu)出版本信息并退(tui)出
4.命令實(shi)例:
實例一:刪除(chu)文(wen)件file,系統會先詢問是否刪除(chu)。
命(ming)令(ling):
rm 文件(jian)名
輸出:
[root@localhost test1]# ll
總計(ji) 4
-rw-r--r-- 1 root root 56 10-26 14:31 log.log
root@localhost test1]# rm log.log
rm:是否(fou)刪除 一般文件(jian) “log.log”? y
root@localhost test1]# ll
總計 0[root@localhost test1]#
說明:
輸入rm log.log命令(ling)后,系統(tong)會詢問是否刪除(chu)(chu)(chu),輸入y后就會刪除(chu)(chu)(chu)文件,不想刪除(chu)(chu)(chu)則(ze)數據n。
實例二:強行刪除(chu)file,系統(tong)不再(zai)提示。
命令:
rm -f log1.log
輸出:
[root@localhost test1]# ll
總計 4
-rw-r--r-- 1 root root 23 10-26 14:40 log1.log
[root@localhost test1]# rm -f log1.log
[root@localhost test1]# ll
總計 0[root@localhost test1]#
實例(li)三:刪除任何.log文(wen)件;刪(shan)除前逐(zhu)一詢問確認
命令:
rm -i *.log
輸出(chu):
[root@localhost test1]# ll
總(zong)計 8
-rw-r--r-- 1 root root 11 10-26 14:45 log1.log
-rw-r--r-- 1 root root 24 10-26 14:45 log2.log
[root@localhost test1]# rm -i *.log
rm:是否刪(shan)除 一般文(wen)件 “log1.log”? y
rm:是否刪除 一(yi)般文件(jian) “log2.log”? y
[root@localhost test1]# ll
總(zong)計(ji) 0[root@localhost test1]#
實例四:將 test1子目錄(lu)及(ji)子目錄(lu)中所有檔案(an)刪除
命令:
rm -r test1
輸(shu)出:
[root@localhost test]# ll
總計(ji) 24drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxr-xr-x 2 root root 4096 10-26 14:51 test1
drwxr-xr-x 3 root root 4096 10-25 17:44 test2
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# rm -r test1
rm:是否進入目(mu)錄 “test1”? y
rm:是(shi)否刪除(chu) 一般(ban)文件 “test1/log3.log”? y
rm:是否刪除(chu) 目(mu)錄(lu) “test1”? y
[root@localhost test]# ll
總計 20drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxr-xr-x 3 root root 4096 10-25 17:44 test2
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]#
實(shi)例五:rm -rf test2命令(ling)會將 test2 子目錄(lu)及子目錄(lu)中所有檔案刪除,并(bing)且不用一一確認(ren)
命令:
rm -rf test2
輸出:
[root@localhost test]# rm -rf test2
[root@localhost test]# ll
總計 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]#
實(shi)例六:刪除(chu)以 -f 開頭的文件
命令(ling):
rm -- -f
輸出:
[root@localhost test]# touch -- -f
[root@localhost test]# ls -- -f
-f[root@localhost test]# rm -- -f
rm:是否刪(shan)除 一般(ban)空(kong)文件(jian) “-f”? y
[root@localhost test]# ls -- -f
ls: -f: 沒有(you)那個文(wen)件或目錄
[root@localhost test]#
也可以(yi)使用下面的操作步驟:
[root@localhost test]# touch ./-f
[root@localhost test]# ls ./-f
./-f[root@localhost test]# rm ./-f
rm:是否刪(shan)除 一般空(kong)文(wen)件 “./-f”? y
[root@localhost test]#
實例七:自定義回收站功能
命令:
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
輸出(chu):
[root@localhost test]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
[root@localhost test]# alias rm='myrm'
[root@localhost test]# touch 1.log 2.log 3.log
[root@localhost test]# ll
總計 16
-rw-r--r-- 1 root root 0 10-26 15:08 1.log
-rw-r--r-- 1 root root 0 10-26 15:08 2.log
-rw-r--r-- 1 root root 0 10-26 15:08 3.log
drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# rm [123].log
moved to /tmp/20121026150901 ok
[root@localhost test]# ll
總計 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# ls /tmp/20121026150901/
1.log 2.log 3.log
[root@localhost test]#
說明:
上面的(de)操(cao)作(zuo)過(guo)程(cheng)模擬(ni)了回收站的(de)效(xiao)果,即刪除文(wen)件(jian)的(de)時候只是把(ba)文(wen)件(jian)放到一個臨時目錄中,這樣(yang)在(zai)需要的(de)時候還可以恢復過(guo)來。
參考資料(liao):
關注 熵減黑客 ,一起學習成長
