Linux必學的重要命令
作者:曹元其 發文時間:2004.12.16
轉自:http://www.ccidnet.com
在前面幾講中,我們把Linux命令按照在系統中的作用分成幾個部分分別予以介紹。但是,還有一些命令不好劃分,然而學習它們同樣是比較重要的。
tar
1.作用
tar命令是Unix/Linux系統中備份檔案的可靠方法,幾乎可以工作於任何環境中,它的使用許可權是所有使用者。
2.格式
tar [主選項+輔選項] 檔案或目錄
3.主要參數
使用該命令時,主選項是必須要有的,它告訴tar要做什麼事情,輔選項是輔助使用的,可以選用。
主選項:
-c 建立新的檔案檔案。如果使用者想備份一個目錄或是一些檔案,就要選擇這個選項。
-r 把要存檔的檔案追加到檔案檔案的未尾。例如使用者已經做好備份檔案,又發現還有一個目錄或是一些檔案忘記備份了,這時可以使用該選項,將忘記的目錄或檔案追加到備份檔案中。
-t 列出檔案檔案的內容,查看已經備份了哪些檔案。
-u 更新檔案。就是說,用新增的檔案取代原備份檔案,如果在備份檔案中找不到要更新的檔案,則把它追加到備份檔案的最後。
-x 從檔案檔案中釋放檔案。
輔助選項:
-b 該選項是為磁帶機設定的,其後跟一數字,用來說明區塊的大小,系統預設值為20(20×512 bytes)。
-f 使用檔案檔案或裝置,這個選項通常是必選的。
-k 儲存已經存在的檔案。例如把某個檔案還原,在還原的過程中遇到相同的檔案,不會進行覆蓋。
-m 在還原檔案時,把所有檔案的修改時間設定為現在。
-M 建立多卷的檔案檔案,以便在幾個磁碟中存放。
-v 詳細報告tar處理的檔案資訊。如無此選項,tar不報告檔案資訊。
-w 每一步都要求確認。
-z 用gzip來壓縮/解壓縮檔案,加上該選項後可以將檔案檔案進行壓縮,但還原時也一定要使用該選項進行解壓縮。
4.應用說明
tar是Tape Archive(磁帶歸檔)的縮寫,最初設計用於將檔案打包到磁帶上。如果下載過Linux的原始碼,或許已經碰到過tar檔案。tar是一個基於檔案的命令,它本質上是連續地、首尾相連地堆放檔案。使用tar可以打包整個分類樹,這使得它特別適合用於備份。歸檔檔案可以全部還原,或者從中展開單獨的檔案和目錄。備份可以儲存到基於檔案的裝置或磁帶裝置上。檔案可以在還原時重新導向,以便將它們重新放到一個與最初儲存它們的目錄(或系統)不同的目錄(或系統)。tar與檔案系統無關,可以使用在ext2、ext3、JFS、Reiser和其它檔案系統上。它支援各種備份介質,包括磁碟片、光碟片寫入器、可重寫的光碟片、JazZip、磁帶、高端磁帶等。Linux中以.tar結尾的檔案都是用tar建立的。它的使用超出了單純的備份,可用來把許多不同檔案放到一起組成一個易於分開的檔案。如果使用Linux原始碼安裝程式,一定使用過tar檔案。這是一個基於檔案的命令,它本質上是連續地、首尾相連地堆放檔案。tar官方網址是http://www.gnu. org/software/tar/tar.html。
請注意,不要忘了Linux是區分大小寫。例如,tar命令應該總是以小寫形式執行。命令列開關可以是大寫、小寫或大小寫混合。例如,-t和-T執行不同的功能。檔案或目錄名稱可以混合使用大小寫,而且就像命令和命令列開關一樣是區分大小寫。
5.應用執行個體
tar是一個命令列的工具,沒有圖形介面。使用Konsole開啟一個終端視窗,接下來是一個簡單的備份命令(在/temp目錄中建立一個back.tar的檔案,/usr目錄中所有內容都包含在其中。):
$tar cvf - /usr > /temp/back.tar
另外,tar命令支援前面第三講中講過的crontab命令,可以用crontab工具設定成基於時間的有規律地運行。例如,每晚6點把/usr目錄備份到hda—第一個IDE介面的主磁碟機 (總是位於第一個硬碟)中,只要將下面語句添加到root的crontab中即可:
$00 06 * * * tar cvf /dev/hda1/usrfiles.tar - /usr
一般情況下,以下這些目錄是需要備份的:
◆/etc 包含所有核心設定檔,其中包括網路設定、系統名稱、防火牆規則、使用者、組,以及其它全域系統項。
◆ /var 包含系統守護進程(服務)所使用的資訊,包括DNS配置、DHCP租期、郵件緩衝檔案、HTTP伺服器檔案、dB2執行個體配置等。
◆/home 包含所有預設使用者的主目錄,包括個人設定、已下載的檔案和使用者不希望失去的其它資訊。
◆/root 根(root)使用者的主目錄。
◆/opt 是安裝許多非系統檔案的地方。IBM軟體就安裝在這裡。OpenOffice、JDK和其它軟體在預設情況下也安裝在這裡。
有些目錄是可以不備份的:
◆ /proc 應該永遠不要備份這個目錄。它不是一個真實的檔案系統,而是運行核心和環境的虛擬化視圖,包括諸如/proc/kcore這樣的檔案,這個檔案是整個運行記憶體的虛擬視圖。備份這些檔案只是在浪費資源。
◆/dev 包含硬體裝置的檔案表示。如果計劃還原到一個空白的系統,就可以備份/dev。然而,如果計劃還原到一個已安裝的Linux 系統,那麼備份/dev是沒有必要的。
unzip
1.作用
unzip命令位於/usr/bin目錄中,它們和MS DOS下的pkzip、pkunzip及MS Windows中的Winzip軟體功能一樣,將檔案壓縮成.zip檔案,以節省硬碟空間,當需要的時候再將壓縮檔用unzip命令解開。該命令使用許可權是所有使用者。
2.格式
unzip [-cflptuvz][-agCjLMnoqsVX][-P <密碼>][.zip檔案][檔案][-d <目錄>][-x <檔案>]
3.主要參數
-c:將解壓縮的結果顯示到螢幕上,並對字元做適當的轉換。
-f:更新現有的檔案。
-l:顯示壓縮檔內所包含的檔案。
-p:與-c參數類似,會將解壓縮的結果顯示到螢幕上,但不會執行任何的轉換。
-t:檢查壓縮檔是否正確。
-u:與-f參數類似,但是除了更新現有的檔案外,也會將壓縮檔中的其它檔案解壓縮到目錄中。
-v:執行是時顯示詳細的資訊。
-z:僅顯示壓縮檔的備忘文字。
-a:對文字檔進行必要的字元轉換。
-b:不要對文字檔進行字元轉換。
-C:壓縮檔中的檔案名稱區分大小寫。
-j:不處理壓縮檔中原有的目錄路徑。
-L:將壓縮檔中的全部檔案名稱改為小寫。
-M:將輸出結果送到more程式處理。
-n:解壓縮時不要覆蓋原有的檔案。
-o:不必先詢問使用者,unzip執行後覆蓋原有檔案。
-P<密碼>:使用zip的密碼選項。
-q:執行時不顯示任何資訊。
-s:將檔案名稱中的空白字元轉換為底線字元。
-V:保留VMS的檔案版本資訊。
-X:解壓縮時同時回存檔案原來的UID/GID。
[.zip檔案]:指定.zip壓縮檔。
[檔案]:指定要處理.zip壓縮檔中的哪些檔案。
-d<目錄>:指定檔案解壓縮後所要儲存的目錄。
-x<檔案>:指定不要處理.zip壓縮檔中的哪些檔案。
-Z unzip:-Z等於執行zipinfo指令。在Linux中,還提供了一個叫zipinfo的工具,能夠察看zip壓縮檔的詳細資料。unzip最新版本是5.50。
gunzip
1.作用
gunzip命令作用是解壓檔案,使用許可權是所有使用者。
2.格式
gunzip [-acfhlLnNqrtvV][-s <壓縮字尾字串>][檔案...]
或者
gunzip [-acfhlLnNqrtvV][-s <壓縮字尾字串>][目錄]
3.主要參數
-a或--ascii:使用ASCII文字模式。
-c或--stdout或--to-stdout:把解壓後的檔案輸出到標準輸出裝置。
-f或-force:強行解開壓縮檔,不理會檔案名稱或硬串連是否存在,以及該檔案是否為符號串連。
-h或--help:線上協助。
-l或--list:列出壓縮檔的相關資訊。
-L或--license:顯示版本與著作權資訊。
-n或--no-name:解壓縮時,若壓縮檔內含有原來的檔案名稱及時間戳記,則將其忽略不予處理。
-N或--name:解壓縮時,若壓縮檔內含有原來的檔案名稱及時間戳記,則將其回存到解開的檔案上。
-q或--quiet:不顯示警告資訊。
-r或--recursive:遞迴處理,將指定目錄下的所有檔案及子目錄一併處理。
-S<壓縮字尾字串>或--suffix<壓縮字尾字串>:更改壓縮字尾字串。
-t或--test:測試壓縮檔是否正確無誤。
-v或--verbose:顯示指令執行過程。
-V或--version:顯示版本資訊。
4.說明
gunzip是個使用廣泛的解壓縮程式,它用於解開被gzip壓縮過的檔案,這些壓縮檔預設最後的副檔名為“.gz”。事實上,gunzip就是gzip的硬串連,因此不論是壓縮或解壓縮,都可通過gzip指令單獨完成。gunzip最新版本是1.3.3 。
unarj
1.作用
unarj解壓縮格式為.arj格式的檔案,使用許可權是所有使用者。
2.格式
unarj [eltx][.arj壓縮檔]
3.主要參數
e:解壓縮.arj檔案。
l:顯示壓縮檔內所包含的檔案。
t:檢查壓縮檔是否正確。
x:解壓縮時保留原有的路徑。
4.說明
帶有.arj副檔名的檔案是由用於MS DOS和Windows的ARJ公用程式建立的。因為ARJ是一種不能免費獲得原始碼的共用件程式,所以在Linux平台上幾乎不存在與其功能匹配的工具,要解壓縮.arj檔案,就要使用unarj公用程式。unarj比ARJ慢,能力也不如ARJ,但至少能夠順利地抽取大多數.arj檔案。unarj只能將檔案抽取到當前的工作目錄、列出檔案內容,或者測試檔案。從ARJ Software的網站或攜帶所需Linux發行版的FTP伺服器上可以下載unarj源碼。另外,unarj通常是基本Linux發行版的一部分,因此可以在主要發行版本的CD-ROM上找到它。如果需要可到所有Linux發行版連結的列表下載,ARJ軟體網址為http://www.arjsoft.com,ARJ的下載頁面為http://www.arjsoft.com/files.htm。unarj最新版本是2.65,注意unarj選項不是以減號(-)開頭的。
mtools
1.作用
mtools實際上是一個命令集合,是DOS檔案系統的工具程式,它可以類比許多DOS命令,使用起來非常方便。使用許可權是所有使用者。Linux系統提供了一組稱為mtools的可移植工具,可以讓使用者輕鬆地從標準的DOS磁碟片上讀、寫檔案和目錄。它們對DOS和Linux環境之間分頁檔非常有用。mtools的使用非常簡單,如果想把磁碟片裡所有的檔案都拷貝到硬碟上,那麼就可以執行以下命令:
mcopy a:*.*
也就是說,只需要在相應的DOS命令之前加上一個字母“m”,就可以完成對應的功能了。一般Linux發行版本中都有這個軟體,可以使用下面命令檢查一下。
rpm -qa|grep mtools
如果沒有安裝,也沒有關係,可以從網上下載(http://mtools.linux.lu/)一個最新版本來安裝。目前可供下載的最新mtools版本是3.9.9,下載連結為http://mtools.linux.lu/mtools-3.9.9-3.i386.rpm。下載後安裝一下即可。
2.包括的命令
mcd 目錄名:改變MS DOS下的目錄。
mcopy 源檔案 目標檔案:在MS DOS和Unix之間複製檔案。
mdel 檔案名稱:刪除MS DOS下的檔案。
mdir 目錄名:顯示MS DOS下的目錄。
mformat 磁碟機代號:在低階格式化的磁碟片上建立MS DOS檔案系統。
rnlabel 磁碟機代號:產生MS DOS下的卷標。
mmd 目錄名:建立MS DOS下的目錄。
mrd 目錄名:刪除MS DOS下的目錄。
mren 源檔案 目標檔案:重新命名已存在的MS DOS檔案。
mtype 檔案名稱:顯示MS DOS檔案的內容。
請注意,這些命令和對應的MS DOS命令非常相似。在mtools命令中,“/”和“/”是可以混用的。因為檔案清單的是DOS系統下的文檔,對大小寫並不敏感,所以“CDE”和“cde”在這裡是一樣的。
3.應用執行個體
(1)如果把磁碟片進行快速格式化,可以使用命令mformat:
mformat A:
mtools當初發展的目的是用來處理DOS檔案系統的,所以只能用在FAT檔案格式的分區上。需要注意的是,如果用mount命令來掛載了FAT16/32分區,那麼就不能使用mtools的指令來處理這些分區上的檔案。這是因為一旦FAT16/32分區掛到了Linux檔案目錄下,Linux就會將其視為檔案系統本身的一部分,這時如果要對其操作就必須使用Linux本身所附帶的指令集。
(2)將DOS盤上的檔案htca.c複製到目前的目錄下,並用ls命令進行驗證。
$ mcopy a:/htca.c
$ ls -l htca.c
-rw-r- -r- - 1 xxq xxq 27136 Jan 1 01:80 htca.c
man
1.作用
man命令用來提供線上協助,使用許可權是所有使用者。在Linux系統中儲存著一部聯機使用的手冊,以供使用者在終端上尋找。使用man命令可以調閱其中的協助資訊,非常方便和實用。
2.格式
man 命令名稱
man [-acdfhkKtwW] [-m system] [-p string] [-C config_file] [-M path] [-P pager] [-S section_list] [section] name ...
3.參數
-C config_file:指定設定檔案man.conf,預設值是/etc/man.conf。
-M path:指定了線上手冊的搜尋路徑, 如果沒有指定則使用環境變數MANPATH的設定;如果沒有使用MANPATH, 則會使用/usr/lib/man.conf內的設定;如果MANPATH是空字串,則表示使用預設值。
-P pager:指定使用何種pager.man會優先使用此選項設定,然後是依環境變數MANPAGER設定,然後是環境變數PAGER;man預設使用/usr/bin/less -is。
-S section_list man:所搜尋的章節列表(以冒號分隔),此選項會覆蓋環境變數MANSECT的設定。
-a man:預設情況是在顯示第一個找到的手冊之後,就會停止搜尋,使用此選項會強迫man繼續顯示所有符合name的線上手冊。
-c:即使有最新的cat page,也繼續對線上手冊重新作排版,本選項在螢幕的行列數改變時或已排版的線上手冊損壞時特別有意義。
-d:不要真的顯示線上手冊,只顯示除錯訊息。
-D:同時顯示線上手冊與除錯訊息。
-h:顯示求助訊息然後結束程式 。
-K:對所有的線上手冊搜尋所指定的字串。請注意,本功能回應速度可能很慢,如果指定section(地區)會對速度有協助。
-m system:依所指定的system名稱而指定另一組的線上手冊。
man:是manual(手冊)的縮寫。在輸入命令有困難時,可以立刻得到這個文檔。例如, 如果使用ps命令時遇到困難,可以輸入man ps得到協助資訊,此時會顯示出ps的手冊頁(man page)。
由於手冊頁man page是用less程式來看的(可以方便地使螢幕上翻和下翻), 所以在man page裡可以使用less的所有選項。
less中比較重要的功能鍵有:
[q] 退出;
[Enter] 一行行地下翻;
[Space] 一頁頁地下翻;
[b] 上翻一頁;
[/] 後跟一個字串和[Enter]來尋找字串;
[n] 發現上一次尋找的下一個匹配。
4.閱讀手冊頁
手冊頁在很少的空間裡提供了很多的資訊, 這裡簡單介紹一下大多數手冊頁中都有的部分內容。Linux手冊頁主要有九個部分:使用者指令、系統調用、程式庫、裝置說明、檔案格式、遊戲、雜項、系統指令、核心。
5.應用執行個體
Linux命令中有一些基礎的、重要的命令,例如ps、find、cat和ls等。下面來舉一個綜合應用的例子,由此可以看出man的地位在Linux中可謂至關重要。但是,man所顯示的資訊卻不是普通的文本,如果直接將這些文字重新導向到一個文字檔,就會發現在man中高亮顯示的文字就變成了兩個,而且有不計其數的定位字元,使列印、編輯都變得非常不便。不過,使用下面這樣一條語句就能得到ps命令列印。
# man ps | col -b | lpr
這條命令同時運用了輸出重新導向和管道兩種技巧,作用是將ps命令的協助資訊可以直接列印出來。更多的Man檔案可以查看Linux Man Pages簡體中文版首頁,其連結為http://cmpp.linuxforum.net/ 。
unencode
1.作用
unencode命令可以把一個二進位檔案表編碼為一個文字檔,使用許可權是所有使用者。
2.格式
uuencode [-hv] [源檔案] 目標檔案
3.主要參數
-h:列出指令使用格式(help) 。
-v:列出版本資訊。
4.應用說明
uuencode指令可以將二進位檔案轉化成可使用電子郵件發送的ASCII編碼形式。uuencode編碼後的資料都以 begin開始,以end作為結束,且通常其中的每一行的開始均為“M”,中間部分是編碼過的檔案,編碼後的檔案比源檔案要大一些。
uudecode
1.作用
uudecode命令用來將uuencode編碼後的檔案還原,uudecode只會將begin與end標記之間的編碼資料還原,程式會跳過權杖以外的資料。它的使用許可權為所有使用者。
2.格式
uuencode [-hv] [file1 ...]
3.主要參數
-h:列出指令使用格式(help)。
-v:列出版本資訊。
4.應用執行個體
使用下面命令一次還原幾個檔案:
uuencode file1.uud file2.uud file3.uud
動手練習
1.在Linux命令列下發送郵件
雖然Linux案頭應用發展很快,但是命令列(Shell)在Linux中依然有很強的生命力。如果能確認電子郵件伺服器支援8bit的位元組,就可以直接使用下面命令:
cat <附件檔案名稱> | mail <郵件地址>
cat(cat是concatenate的縮寫)命令是將幾個檔案處理成一個檔案,並將這種處理的結果儲存到一個單獨的輸出檔案,這裡我們用它來合并郵件的文本。
寫好郵件名稱,比如叫cjkmail,然後使用下面命令:
$uuencode <附件檔案名稱> <附件檔案名稱> >>cjkmail
這樣就可以用vi編輯器寫cjkmail檔案,並在前面寫上信的本文,然後寄出。
對方收到信後,把信中屬於cjkmail中的內容拷貝出來,存為themail.uue。如果對方是在Windows下,就可以用WinRAR或WinZip解壓,這樣就可以看到附件。
如果對方也使用Linux,可以用undecode命令還原:
$ uudencode -o<附件檔案名稱> themail.uue
2.實現tar的分卷
筆者想把一個378MB的檔案壓縮成多個63MB的檔案(筆者的USB為64MB),使用下面命令:
$tar czvf - dir | split -d -b 63m
然後合并命令:
$cat x* > dir.tgz
以上例子實際是由三個命令組合完成的,即用tar打包,用split分割,用cat合并。“tar czvf - dir”的意思是把dir目錄打包,並輸出到標準輸出(argv),這樣就可以直接用管道輸出給split。
3.連續執行一個命令
使用watch命令,可以反覆執行命令。如果和ls配合,可以達到觀察某檔案大小變化的效果。
$watch ls -l file.name
4.用tar命令匯出一個檔案
有一個tar格式的DVD檔案GLvPro6.4_linux.tar,因為該檔案非常大(4.7GB),如果全部解壓比較麻煩,可以用下面命令先匯出readme.txt看看。
tar xvf GLvPro6.4_linux.tar readme.txt
這樣readme.txt就單獨被匯出了。
5.用tar打包一個目錄時只備份其中的幾個子目錄
tar cf --exclude home/cjh home/cao
這樣home目錄下只有cjh和cao兩個子目錄備份。
到此為止,Linux必學的60個命令已經全部介紹完了。Linux的命令列方式功能強大,如果熟練掌握了Linux的常用命令,往往只需要通過各種技巧就可以組合構成一條複雜的命令,從而完成使用者任務。Linux系統中的命令實在是太多了,不可能像在MS DOS中把所有的命令及參數都記住。Linux系統提供了一些方法,比如可以通過“help”和“man”來查詢名令。