linux系列(五):rm命令


rm是一個危險的命令,使用的時候要特別當心,尤其對於新手,否則整個系統就會毀在這個命令(比如在/(根目錄)下執行rm * -rf)。所以,我們在執行rm之前最好先確認一下在哪個目錄,到底要刪除什么東西,操作時保持高度清醒的頭腦。

1、命令格式:

  rm [選項] 文件

2、命令功能:

  刪除一個目錄中的一個或多個文件或目錄,如果沒有使用- r選項,則rm不會刪除目錄。如果使用 rm 來刪除文件,通常仍可以將該文件恢復原狀。

3、命令參數:

  -f, --force    忽略不存在的文件,從不給出提示。
  -i, --interactive 進行交互式刪除
  -r, -R, --recursive   指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。
  -v, --verbose    詳細顯示進行的步驟
  --help     顯示此幫助信息並退出
  --version  輸出版本信息並退出

4、常用實例:

(1)、刪除文件file,有時系統會先詢問是否刪除。

命令:

  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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM