rm是一個危險的命令,使用的時候要特別小心,尤爲對於新手,不然整個系統就會毀在這個命令(好比在/(根目錄)下執行rm * -rf)。因此,咱們在執行rm以前最好先確認一下在哪一個目錄,到底要刪除什麼東西,操做時保持高度清醒的頭腦。linux
一、命令格式:bash
rm [選項] 文件spa
二、命令功能:code
刪除一個目錄中的一個或多個文件或目錄,若是沒有使用- r選項,則rm不會刪除目錄。若是使用 rm 來刪除文件,一般仍能夠將該文件恢復原狀。blog
三、命令參數:遞歸
-f, --force 忽略不存在的文件,從不給出提示。 -i, --interactive 進行交互式刪除 -r, -R, --recursive 指示rm將參數中列出的所有目錄和子目錄均遞歸地刪除。 -v, --verbose 詳細顯示進行的步驟 --help 顯示此幫助信息並退出 --version 輸出版本信息並退出
四、經常使用實例:io
(1)、刪除文件file,有時系統會先詢問是否刪除。class
命令:test
rm 文件名變量
輸出:
felix@felix-computer:~/test$ ls aaa.txt felix@felix-computer:~/test$ rm aaa.txt felix@felix-computer:~/test$ ls felix@felix-computer:~/test$
說明:
有時候,系統會詢問是否刪除,輸入y後就會刪除文件,不想刪除則數據n。
(2)、強行刪除file,系統不提示。
命令:
rm -f 文件名
輸出:
felix@felix-computer:~/test$ ls aaa.txt felix@felix-computer:~/test$ rm -f aaa.txt felix@felix-computer:~/test$ ls felix@felix-computer:~/test$
(3)、刪除任何.txt文件;刪除前逐一詢問確認
命令:
rm -i *.txt
輸出:
felix@felix-computer:~/test$ ls a.txt b.txt felix@felix-computer:~/test$ rm -i *.txt rm:是否刪除普通空文件 'a.txt'? y rm:是否刪除普通空文件 'b.txt'? y felix@felix-computer:~/test$ ls felix@felix-computer:~/test$
(4)、將test1目錄以及子目錄中的全部文件刪除
命令:
rm -r test1 若是要顯示提示: rm -ri test1
輸出:
felix@felix-computer:~/test$ ls test1 felix@felix-computer:~/test$ find ./ -type f ./test1/t.txt felix@felix-computer:~/test$ rm -ri test1/ rm:是否進入目錄'test1/'? y rm:是否進入目錄'test1/test2'? y rm:是否刪除目錄 'test1/test2/test3'? y rm:是否刪除目錄 'test1/test2'? y rm:是否刪除普通空文件 'test1/t.txt'? y rm:是否刪除目錄 'test1/'? y felix@felix-computer:~/test$
(5)、刪除test2子目錄中的全部文件,而且不一一確認。
命令:
rm -rf test2
輸出:
felix@felix-computer:~/test$ mkdir -p test2/test3/test4 felix@felix-computer:~/test$ touch test2/aaa.txt test2/test3/bbb.txt test2/test3/test4/ccc.txt felix@felix-computer:~/test$ find ./ -type f ./test2/test3/test4/ccc.txt ./test2/test3/bbb.txt ./test2/aaa.txt felix@felix-computer:~/test$ rm -rf test2/ felix@felix-computer:~/test$
(6)、自定義回收站功能
命令:
先執行: myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; } 再執行: alias rm='myrm'
輸出:
felix@felix-computer:~/test$ myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; } felix@felix-computer:~/test$ alias rm='myrm' felix@felix-computer:~/test$ mkdir -p test1/test2/test3 && touch {1,2,3,4}.txt felix@felix-computer:~/test$ ls 1.txt 2.txt 3.txt 4.txt test1 felix@felix-computer:~/test$ rm * moved to /tmp/回收站/2018_11_04_12_37_25 ok felix@felix-computer:~/test$ ls /tmp/回收站/2018_11_04_12_37_25 1.txt 2.txt 3.txt test1 felix@felix-computer:~/test$ ls felix@felix-computer:~/test$
說明:
a、 myrm() { D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); #在/tmp文件夾中建立名爲「當前日期」的文件; #其中「date+%Y_%m_%d_%H_%M_%S」是規定了日期的輸出格式; mkdir -p $D; #以變量D中的路徑建立文件夾。 mv "$@" $D && echo "moved to $D ok"; #將所要刪除的文件移入變量D中的文件夾內,移入成功後,輸出移動成功。 } b、 alias rm='myrm' #命令別名定義方式,此定義成功後,不管輸入rm或myrm系統都會作出相同操做。 c、 移入的是linux中的/tmp/目錄下,該目錄會自動定時清理,若是要恢復刪除的文件,須要在清理以前恢復。好比Ubuntu系統是每次重啓自動清理。 d、 若是想恢復rm爲原來的rm操做,執行:alias rm=/bin/rm e、 自定義回收站的本質是mv操做,因此加的參數都是mv的參數
注意:若是須要每次使用rm命令都執行上述回收站功能,須要修改.bashrc 文件
在.bashrc 文件下面添加如下兩行
myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; } alias rm='myrm'
添加完後執行:source .bashrc