用途說明
rm命令是常用的命令,用來刪除文件或目錄(remove files or directories)。它也是一個危險的命令,使用的時候要特別當心,尤其對於新手,否則整個系統就會毀在這個命令(比如在/下執行rm * -rf)。所以,我們在執行rm之前最好先確認一下在哪個目錄,到底要刪除什么東西,操作時保持清醒的頭腦。
在rm的手冊中寫道:用rm刪除文件還是有可能恢復文件內容的,如果要不可恢復的刪除文件,考慮使用shred命令。(_Warning_: If you use `rm' to remove a file, it is usually possible to recover the contents of that file. If you want more assurance that the contents are truly unrecoverable, consider using `shred'.)至於具體怎么恢復rm刪除的文件,有文章專門討論了。但是不幸的是文件系統是ext2可恢復、ext3不可恢復,ext3的刪除機制是直接把 inode data 刪除了,所以造成 ext3 無法反刪除(ext3設計為無法恢復被刪除的文件)。不過,有些文章提到可以使用debugfs工具來嘗試恢復。無論如何,rm文件之后要想恢復還是很麻煩的。
為了避免一個命令毀掉整個系統、或者誤刪重要文件( 比如辛苦編寫的源程序文件),最好的方式不去刪除,而是采用改名或者移動文件位置來去掉不需要的文件(mv命令)。還有就是,在進行一些關鍵操作時,先對數據進行備份,尤其是異機備份、異地備份。
常用參數
格式:rm file
刪除文件file,系統會先詢問是否刪除。
格式:rm -f file
強行刪除file,系統不再提示。
格式:rm -rf dir
強行刪除目錄dir下的所有文件、子目錄下的所有文件和目錄、刪除dir本身。
格式:rm -f *.LOG*
刪除日志文件。
使用示例
示例一 rm的真實身份
[root@jfht ~]# type -a rm
rm is aliased to `rm -i'
rm is /bin/rm
[root@jfht ~]#
示例二 回收站嘗試
下面的操作過程模擬了回收站的效果,即刪除文件的時候只是把文件放到一個臨時目錄中,這樣在需要的時候還可以恢復過來。
[root@jfht ~]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
[root@jfht ~]# alias rm='myrm'
[root@jfht ~]# touch 1.txt 2.txt 3.txt
[root@jfht ~]# ls [123].txt
1.txt 2.txt 3.txt
[root@jfht ~]# rm [123].txt
moved to /tmp/20110401214056 ok
[root@jfht ~]# ls /tmp/20110401214056/
1.txt 2.txt 3.txt
[root@jfht ~]#
示例三 刪除以-開頭的文件
[root@jfht ~]# touch -- -f
[root@jfht ~]# ls -- -f
-f
[root@jfht ~]# rm -- -f
moved to /tmp/20110401214709 ok
也可以使用下面的操作步驟。
[root@jfht ~]# touch ./-f
[root@jfht ~]# ls ./-f
./-f
[root@jfht ~]# rm ./-f
moved to /tmp/20110401214859 ok
[root@jfht ~]#
問題思考
相關資料
【1】Linux寶庫 Linux指令篇:檔案目錄管理--rm
http://doc.linuxpk.com/206.html
【2】Linux公社 Linux下用rm刪除的文件的恢復方法
http://www.linuxidc.com/Linux/2008-08/14744.htm
【3】maxpassion的個人空間 Linux恢復誤刪除文件(轉載)
http://www.cnttr.com/49230/viewspace_6093.html
【4】52CTO Linux ext3文件系統 rm恢復
http://os.51cto.com/art/200908/141407.htm
我使用過的Linux命令系列總目錄
我使用過的Linux命令系列總目錄
本文鏈接: http://codingstandards.iteye.com/blog/786653 (轉載請注明出處)
概述
關於命令類型划分
本表中列出了我窮盡了我所有的記憶整理出來的Linux命令,其中關於外部命令、關鍵字或內建命令的划分,不一定正確。有很多命令,既是內建命令也可能是外部命令,為啥?Bash為了更高效率的執行命令和腳本,把很多外部命令以內建命令的方式實現了。我們使用type這個命令就可以知道一個命令的類型了,如下所示:
[root@jfht ~]# type -a type
type is a shell builtin <== builtin就是指內建命令
[root@jfht ~]# type -a pwd
pwd is a shell builtin
pwd is /bin/pwd <== 此乃外部命令
[root@jfht ~]# type -a ls
ls is aliased to `ls --color=tty' <== 此乃別名
ls is /bin/ls
[root@jfht ~]# type -a for
for is a shell keyword <== 此乃Shell關鍵字
[root@jfht ~]#
關於本系列文章
首先,這只是我個人十多年來使用Unix/Linux的經驗的總結。我經常感覺自己在Linux的使用和維護方面好像知道得不少了,但是發現沉下心來總結的時候,發現還是很弱的。其實很多東西只是知道個名字,知道點皮毛,更談不上深入的理解。在寫這些文章的時候,我參考了相同類型的文章,通常是Google搜索的前幾頁結果,我都會看一下,發現總能得到一些新的知識、新的啟發,感覺到學無止境,厲害的角色很多。
其次,這些文章並非某個命令的手冊頁,只是我平時使用它們的時候的一些慣用法,或者寫Bash腳本的時候是怎么用的。我認為,對於這些Linux命令,不可能、也沒有必要把所有的參數記住,只需要把常用的記住,然后使用man去查看手冊頁。與其知道每個具體的東西,不如知道在哪里去找它。這一點,我深深的體會到Unix/Linux在文檔方面的完善,真正是一個適合開發者使用的平台。
再次,我所寫的東西並非完全正確、有可能似是而非,但我盡可能多去實際的去執行一下它們。我非常歡迎各位熱愛Linux的朋友們一起參與討論,特別是我每篇文章都會有一個“問題思考”部分,其實有些問題也是我本人不那么確定或者正在尋找答案的問題。在此,我要感謝各位,浪費了你們寶貴的時間來看這些質量不怎么高的文章。
命令字母順序表
這個一個浩大而艱巨的任務,我非常擔心能不能完成它。我想說,世界上最難得兩個字:堅持!
首字母 |
外部命令(某些也可能是內建命令) |
關鍵字或內建命令 |
內置環境變量 |
A |
ac 在線時間統計 adduser 添加用戶賬號 apropos 根據關鍵字搜索命令 ar arp 操作arp緩存 at 在指定時間執行一次任務 autofork awk |
alias |
|
B |
bash base64 用base64編解碼 basename 去掉文件名的目錄和后綴 bc 浮點數計算器、進制轉換 |
bg break
|
|
C |
cal 顯示日歷 cat 連接文件或標准輸入並打印 cc chgrp chkconfig 查詢/修改系統服務的運行級別 chmod chown chroot clear 清除終端屏幕,不是cls comm complete 強勁的bash參數補全功能 cp 復制文件 cpio cronolog (2009.09.22) crontab curl 強大的網絡傳輸工具 cut cvs |
case 多分支判斷語句 cd 更改當前工作目錄 continue
|
|
D |
date dd (2009.09.19) df 查看磁盤空間占用情況 diff dir dirname 截取給定路徑的目錄部分 dmesg 查看開機信息/打印或控制內核環形緩沖區 dmidecode 查看硬件信息 dos2unix 把DOS格式的文本文件轉換成Unix格式 dot 繪制DOT語言腳本描述的圖形 doxygen du 查看文件的磁盤空間占用情況 |
declare dirs (2010.03.15) do done |
|
E |
echo 顯示文本、打印信息 egrep env 顯示當前用戶的環境變量 eval exec expr |
elif else esac exit 退出當前shell export |
|
F |
false fgrep file 檢測並顯示文件類型 find free 顯示內存的使用情況 ftp |
fg fi for Bash中的for循環
|
|
G |
gawk gdb gcc grep groupadd (2009.09.19) groupdel (2009.09.19) groupmod (2009.09.19) groups (2009.09.19) gunzip gzip g++ |
|
|
H |
halt 停止系統運行,但不關閉電源 head help 顯示Bash內建命令的幫助信息 hexdump “十六”進制查看器 hostname 顯示或設置主機名 hwclock 查詢和設置硬件時鍾 |
help history |
HISTTIMEFORMAT HISTSIZE HISTFILESIZE HISTFILE HISTCONTROL HISTIGNORE |
I |
iconv 字符編碼轉換工具 ij ifconfig iptables iptables-save (2009.09.19) iptables-restore (2009.09.19) info insmod |
if Bash中的條件判斷 in |
|
J |
java javac jar jps (2009.09.19) jstat (2009.09.19) jmap (2009.09.19) jinfo (2009.09.19) javadoc jobs 顯示當前終端關聯的后台任務情況 join 根據關鍵字合並數據文件 |
|
|
K |
kill 終止進程/發送信號 killall 殺死指定名字的進程 |
|
|
L |
ls 顯示文件目錄列表 less lsof locate ln lsmod last ld ll lsb_release 查看當前系統的發行版信息 |
|
|
M |
more mv 文件或目錄改名、移動位置 man 顯示在線手冊頁 MySQL MySQL客戶端命令行工具 mkdir make 強大的編譯工具 mysqldump mount mysqladmin (2009.09.27) |
|
|
N |
nano 比vi簡單易用的文本編輯器 nohup 執行其他命令,並且忽略SIGHUP信號 netstat nslookup nice (2010.03.15) nginx (2010.09.29) |
|
|
O |
openssl (2009.09.19) |
|
|
P |
ps 顯示當前正在運行的進程列表 pstree 以樹狀圖顯示進程間的關系 ping pwd 顯示當前工作目錄 perl php pidof 找出正在運行程序的進程PID printf (2009.09.22) |
popd (2010.03.15) pushd (2010.03.15) |
PATH PS1 PS2 PS3 PS4 PROMPT_COMMAND |
Q |
quota |
|
|
R |
rm 刪除文件或目錄 rmdir read reset 終端屏幕混亂的終結者 rmmod rar route rpm rpmbuild rlwrap (2009.09.19) rsync (2010.03.08) renice (2010.03.15) rz 批量上傳文件,簡單易用 |
return |
RANDOM |
S |
ssh Secure Shell 客戶端 sftp 安全文件傳輸命令行工具 su setsid sort screen 虛擬終端屏幕管理器 sed setup service 系統服務管理 sleep set sqlplus sox sh sysctl sync 強制將內存中的文件緩沖內容寫到磁盤 strings stty 顯示和修改終端行設置 stat 顯示文件或文件系統狀態 ssh-keygen (2010.03.15) ssh-copy-id (2010.03.15) sar (2010.03.15) sadc (2010.03.15) sa1 (2010.03.15) sa2 (2010.03.15) swig 把C/C++代碼嵌入Java等語言的開發工具 sz 下載文件,無需ftp/sftp |
shift shopt (2010.03.15) select (2010.03.15) set (2010.03.15) source 在當前shell環境中執行指定文件中的命令 |
|
T |
time 測定一個命令的資源使用情況 telnet 基於TELNET協議的遠程登錄工具 tac 與cat相反的命令 tar 解壓縮工具 top 實時監視Linux任務 tty 打印標准輸入的文件名稱 tree 以樹狀圖列出目錄的內容 tracert test tail 輸出文件尾部/動態監視文件尾部 tailf 跟蹤日志文件/更好的tail -f版本 touch 創建文件或修改文件時間 true 啥也不做,設置退出碼為0 tee 重定向輸出到多個文件 tr tsort 拓撲排序 tzselect 選擇時區 type 顯示命令的類型 |
then trap 在腳本中處理信號
|
|
U |
uptime 顯示系統運行時間 uname 打印系統信息 uniq unzip 解壓zip文件 uncompress 解壓.Z文件 unrar 解壓rar文件 updatedb usleep useradd 添加用戶賬號 userdel usermod umount unix2dos (2009.09.19) |
ulimit 在shell進程中限制系統資源 umask until unset |
|
V |
vi vim (2010.09.28) view vmstat valgrind (2010.09.29) |
|
|
W |
w 顯示誰登錄了系統及在做什么 who 查看當前登錄用戶 whereis 查找命令的位置 wc wget wait whatis ( 2009-10-18 ) |
while Bash中的while循環 |
|
X |
xargs |
|
|
y |
yes 重復輸出字符串 |
|
|
Z |
zip |
|
|
^ |
^Z (2010.03.15) ^R (2010.03.15) |
|
|