昨天學習了創建文件和目錄的命令mkdir ,今天學習一下linux中刪除文件和目錄的命令: rm命令。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.命令實例:
實例一:刪除文件file,系統會先詢問是否刪除。
命令:
rm 文件名
輸出:
[root@localhost test1]# ll total 0 -rw-r--r--. 1 root root 0 Nov 23 11:03 log.log drwxr-xr-x. 7 root root 61 Nov 22 16:40 scf [root@localhost test1]# rm log.log rm: remove regular empty file ‘log.log’? y [root@localhost test1]# ll total 0 drwxr-xr-x. 7 root root 61 Nov 22 16:40 scf
說明:
輸入rm log.log命令後,系統會詢問是否刪除,輸入y後就會刪除文件,不想刪除則數據n。
實例二:強行刪除file,系統不再提示。
命令:
rm -f log1.log
輸出:
[root@localhost test1]# ll total 0 -rw-r--r--. 1 root root 0 Nov 23 11:05 log1.log drwxr-xr-x. 7 root root 61 Nov 22 16:40 scf [root@localhost test1]# rm -f log1.log [root@localhost test1]# ll total 0 drwxr-xr-x. 7 root root 61 Nov 22 16:40 scf
實例三:刪除任何.log文件;刪除前逐一詢問確認
命令:
rm -i *.log
輸出:
[root@localhost test1]# ll total 0 -rw-r--r--. 1 root root 0 Nov 23 11:07 log1.log -rw-r--r--. 1 root root 0 Nov 23 11:07 log2.log drwxr-xr-x. 7 root root 61 Nov 22 16:40 scf [root@localhost test1]# rm -i *.log rm: remove regular empty file ‘log1.log’? y rm: remove regular empty file ‘log2.log’? y [root@localhost test1]# ll total 0 drwxr-xr-x. 7 root root 61 Nov 22 16:40 scf
實例四:將 test1子目錄及子目錄中所有檔案刪除
命令:
rm -f test1
輸出:
[root@localhost test1]# ll total 0 drwxr-xr-x. 7 root root 61 Nov 22 16:40 scf drwxr-xr-x. 2 root root 21 Nov 23 11:12 test1 drwxr-xr-x. 2 root root 6 Nov 23 11:10 test2 drwxr-xr-x. 2 root root 6 Nov 23 11:10 test3 drwxr-xr-x. 2 root root 6 Nov 23 11:10 test4 drwxr-xr-x. 2 root root 6 Nov 23 11:10 test5 [root@localhost test1]# rm -f test1 rm: cannot remove ‘test1’: Is a directory [root@localhost test1]# rm -r test1 rm: descend into directory ‘test1’? y rm: remove regular empty file ‘test1/log3.log’? y rm: remove directory ‘test1’? y
實例五:rm -rf test2命令會將 test2 子目錄及子目錄中所有檔案刪除,並且不用一一確認
命令:
rm -rf test2
輸出:
[root@localhost test1]# rm -rf test2 [root@localhost test1]# ll total 0 drwxr-xr-x. 7 root root 61 Nov 22 16:40 scf drwxr-xr-x. 2 root root 6 Nov 23 11:10 test3 drwxr-xr-x. 2 root root 6 Nov 23 11:10 test4 drwxr-xr-x. 2 root root 6 Nov 23 11:10 test5
實例六:刪除以 -f 開頭的文件
命令:
rm -- -f
輸出:
[root@localhost test1]# touch -- -f [root@localhost test1]# ls -f scf [root@localhost test1]# ls -- -f -f [root@localhost test1]# rm -- -f rm: remove regular empty file ‘-f’? y [root@localhost test1]# ls -- -f ls: cannot access -f: No such file or directory
也可以使用下面的操作步驟:
[root@localhost test1]# touch ./-f [root@localhost test1]# ls -f scf [root@localhost test1]# rm ./-f rm: remove regular empty file ‘./-f’? y
實例七:自定義回收站功能
命令:
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
輸出:
[root@localhost ~]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok";} [root@localhost ~]# alias rm='myrm' [root@localhost ~]# touch 1.log 2.log 3.log [root@localhost ~]# ll total 4 -rw-r--r--. 1 root root 0 Nov 23 11:21 1.log -rw-r--r--. 1 root root 0 Nov 23 11:21 2.log -rw-r--r--. 1 root root 0 Nov 23 11:21 3.log -rw-------. 1 root root 1364 Sep 6 11:31 anaconda-ks.cfg drwxr-xr-x. 3 root root 16 Nov 23 11:18 test1 [root@localhost ~]# rm [123].log moved to /tmp/20161123112222 ok [root@localhost ~]# ll total 4 -rw-------. 1 root root 1364 Sep 6 11:31 anaconda-ks.cfg drwxr-xr-x. 3 root root 16 Nov 23 11:18 test1 [root@localhost ~]# ls /tmp/20161123112222/ 1.log 2.log 3.log [root@localhost ~]#
說明:
上面的操作過程模擬了回收站的效果,即刪除文件的時候只是把文件放到一個臨時目錄中,這樣在需要的時候還可以恢復過來。
參考資料:
http://codingstandards.iteye.com/blog/983531