linux系列(五):rm命令

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

相關文章
相關標籤/搜索