每天一個linux命令:rm

每天一個linux命令:rm

更多精彩請關注:www.zicreate.com

1.命令功能

rm 即 remove files or directories,刪除文件或目錄命令,也可以將某個目錄及其下屬的所有文件及其子目錄均刪除掉。對於鏈接文件,只是刪除整個鏈接文件,而原有文件保持不變。

注意:使用rm命令要格外小心。因爲一旦刪除了一個文件,就無法再恢復它。所以,在刪除文件之前,最好再看一下文件的內容,確定是否真要刪除。rm命令可以用”-i”選項,這個選項在使用文件擴展名字符刪除多個文件時特別有用。使用這個選項,系統會要求你逐一確定是否要刪除。這時,必須輸入y並按Enter鍵,才能刪除文件。如果僅按Enter鍵或其他字符,文件不會被刪除。

新手注意:rm -rf *刪除當前目錄下的所有文件,這個命令很危險,應避免使用。

2.命令格式

rm (選項)(參數)

3.命令參數

    -d:直接把欲刪除的目錄的硬連接數據刪除成0,刪除該目錄;
    -f:強制刪除文件或目錄;
    -i:刪除已有文件或目錄之前先詢問用戶;
    -r或-R:遞歸處理,將指定目錄下的所有文件與子目錄一併處理;
    --preserve-root:不對根目錄進行遞歸操作;
    -v:顯示指令的詳細執行過程。

4.使用場景

rm 命令非常簡單,後面直接跟文件或目錄即可。

常見操作如下:

rm  file.txt                #  刪除一個文件;
rm -r /tmp/test        #  刪除一個目錄;
rm -rf /tmp/test/*    #  刪除目錄下的所有文件;這個命令的危險之處就在於有時操作太快而稍不留意命令就會變成:“rm -rf /tmp/test/ [空格] *”!!!這種情況下將會刪除/tmp/test/還有rm命令執行目錄下的所有文件。如果rm命令是在“/”根目錄下執行的,那麼整個系統就完了。
rm *.txt                    # 刪除當前目錄下所有的txt文件
rm test[1-3].txt        # 刪除當前目錄下的test1.txt test2.txt test3.txt;
rm test{1,3,4}.txt      # 刪除當前目錄下的test1.txt test3.txt test4.txt;

關於上面命令中通配符的講解在前期的文章中已經有所涉及,本文不再詳解。

擴展

(1)rmdir

rmdir 刪除空目錄,一個目錄被刪除之前必須是空的。如果目錄非空會報錯。

命令格式

rmdir (命令參數) 目錄名

命令參數

    -p--parents:刪除指定目錄後,若該目錄的上層目錄已變成空目錄,則將其一併刪除;
    --ignore-fail-on-non-empty:此選項使rmdir命令忽略由於刪除非空目錄時導致的錯誤信息;
    -v-verboes:顯示命令的詳細執行過程;

使用場景

$ rmdir /tmp/test/subdir

這個命令我基本沒用過,因爲 rm 已經可以完成目錄刪除工作了。

(2)配合find使用

在目錄/tmp/test/ 下面查找文件名爲”test*.txt” 類型的文件並刪除:

$ find /tmp/test/ -iname “test*.txt” -exec rm {} \;

find 爲查找命令,後期文章將會詳解。

(3)自定義回收站功能

爲了防止錯誤刪除文件,保證所有用戶都能將 rm 命令刪除的文件先放入回收站,可以在/etc/profile文件最後添加如下代碼:

mkdir -p ~/.trash

alias rm=trash
trash()
{
    echo "File move to ~/.trash/"
    mv $@ ~/.trash/
}

修改後執行 # source /etc/profile 重載環境變量,使修改生效(此需要root權限)。使用此種方法之後,rm 命令的各種命令參數選項就不再有效了。

如果是隻想修改自己的rm命令,則修改“~/.bashrc”,同樣在文件最後添加上面的代碼。如果該文件中有“alias rm=’rm -i’”這樣的代碼,則註釋掉該行(修改爲“#alias rm=’rm -i’”)。

修改後執行 # source /etc/profile 重載環境變量。

演示如下:

# touch test1.txt test2.txt test3.txt test4.txt
# rm *
# ls /root/.trash/
test1.txt  test2.txt  test3.txt  test4.txt

如果要清空回收站可以使用如下方法:

方法1$ /bin/rm -rf ~/.trash/*

方法2$ \rm  -rf ~/.trash/*

方法3$ unaslias rm        #(這只是臨時取消rm的別名)
$ rm  -rf ~/.trash/*
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章