1. 程式人生 > >linux系列(五):rm命令

linux系列(五):rm命令

自動 其中 以及 添加 退出 自動清理 v操作 方式 version

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

linux系列(五):rm命令