3.3. 重要的 Linux 指令

本段落會深入說明 SUSE Linux 系統的最重要指令。本章節列示很多指令。除了列示個別指令、參數之外,會在適當之處,介紹典型的範例應用程式。若要深入瞭解各種指令,請使用 man 後加上指令名稱來取得並使用手冊頁,例如,man ls

在 man 頁面中,使用 PgUpPgDn 上下移動。使用 HomeEnd,在文件的開頭和結尾之間移動。按 Q 結束此檢視模式。使用 man man,可詳細瞭解 man 指令本身的資訊。

在以下的介紹中,個別指令元件會以不同的字體表示。實際的指令以及它的必要選項,永遠會列印成 command option。不要求一定要放在 [方括號] 中的規格或參數。

視您的需要調整設定。如果沒有名稱為 file 的檔案存在,就不需要寫入 ls file。您通常可以結合數個參數,例如使用 ls -la 而不是 ls -l -a

3.3.1. 檔案指令

下節列出最重要的檔案管理指令。其中涵蓋一般檔案管理以及檔案系統 ACL 的操作。

3.3.1.1. 檔案管理

ls [選項] [檔案]

如果您執行 ls 而未加上任何其他參數,程式會以簡要格式,列示所在目錄的內容。

-l

詳細清單

-a

顯示隱藏的檔案

cp [選項] 來源目標

複製來源目標

-i

在覆寫現有目標 之前,等候確認 (若有需要)

-r

循環複製 (包括子目錄)

mv [選項] 來源目標

複製來源目標,然後刪除原始的來源

-b

移動之前,先建立來源的備份

-i

在覆寫現有的目標檔案 之前,等候確認 (若有需要)

rm [選項] 檔案

從檔案系統移除指定的檔案。除非使用選項 -r,否則 rm 無法移除目錄。

-r

刪除任何現有的子目錄

-i

刪除每一個檔案前,等候確認。

ln [選項] 來源 目標

建立從來源目標的內部連結。通常,這種連結會直接指向同一檔案系統上的來源。不過,如果執行 ln 時使用 -s 選項,它會建立符號連結,只會指向來源所在的目錄位置,提供跨檔案系統的連結功能。

-s

建立符號連結

cd [選項] [目錄]

切換目前的目錄。cd 未加任何參數可以切換到使用者的主目錄。

mkdir [選項] 目錄

建立新目錄。

rmdir [選項] 目錄

如果指定的目錄已經是空的,則會刪除該目錄。

chown [選項] 使用者名稱[:[群組]] 檔案

將檔案的擁有權轉移給具有指定的使用者名稱的使用者。

-R

變更所有子目錄中的檔案與目錄

chgrp [選項] 群組名稱 檔案

將指定檔案的群組擁有權,移交至指定的群組。如果成員屬於目前群組和新群組,則檔案擁有者只可以變更群組擁有權。

chmod [選項] 模式 檔案

變更存取許可權。

mode 參數有三個部分:group (群組)access (存取權) 以及access type (存取類型)group 接受以下字元:

u

使用者

g

群組

o

其他

至於 access,使用 + 可授與存取權,使用 - 則可拒絕授與權限。

access type 將提供下列控制選項:

r

讀取

w

寫入

x

execute -- 執行檔案或切換至該目錄。

s

Setuid 位元 -- 應用程式或程式可以依照檔案擁有者方式,進行啟動

做為替代方法,可以使用數字程式碼。此程式碼的四個位數組成值 4、2 和 1 的總合 -- 二進位遮罩的十進位結果。第一個位數會設定使用者 ID (SUID) (4),設定群組 ID (2) 以及黏貼 (1) 位元。第二個位數定義檔案擁有者的許可權。第三個位數定義群組成員的許可權,最後的位數會設定所有其他使用者的許可權。讀取許可權設成 4,寫入許可權設成 2,而執行檔案許可權設成 1。檔案的擁有者一般的執行檔案許可權是 6 或 7。

gzip [參數] 檔案

此程式會使用複雜算術演算法來壓縮檔案內容。用此方法壓縮的檔案,其副檔名是 .gz,而且使用前必須解壓縮。若要壓縮多個檔案或整個目錄,請使用 tar 指令。

-d

解壓縮包裝的 gzip 檔案,如此它們會恢復成原始大小而且可以正常處理 (和指令 gunzip 類似)。

tar 選項 歸檔 檔案

tar 將一或多個檔案放到歸檔。壓縮是選擇性的,tar 是相當複雜的指令,有多個選項可用。最常用的選項是:

-f

通常用來將輸出寫入檔案而不是螢幕

-c

建立新的 tar 歸檔

-r

新增檔案至現有的歸檔

-t

輸出歸檔的內容

-u

但是只有在檔案比已包含在歸檔中的檔案更新時,才新增檔案

-x

解開歸檔的檔案 (擷取)

-z

使用 gzip 包裝產生的歸檔

-j

使用 bzip2 壓縮產生的歸檔

-v

列示處理的檔案

tar 建立,且副檔名是 .tar 的歸檔檔案。如果 tar 封存也使用 gzip 壓縮,則副檔名是 .tgz.tar.gz。如果它使用 bzip2 壓縮,則副檔名是 .tar.bz2。您可以在 節 3.1.5, "歸檔和資料壓縮" 找到應用程式範例。

locate 樣式

這個指令只有在您已經安裝 findutils-locate 套件時才可使用。locate 指令可以尋找指定檔案的所在目錄。如有需要,請使用萬用字元來指定檔案名稱。程式執行速度非常快,因為它使用針對這個目的而建立的資料庫 (不必搜尋整個檔案系統)。不過這樣快速的方式,也因此產生了缺點:locate 找不到本身資料庫最後更新之後建立的任何檔案。這種資料庫可以由 root 使用 updatedb 產生。

updatedb [選項]

這個指令會為 locate 使用的資料庫進行更新。若要在現有目錄包括檔案,請以 root 身份執行程式。加上 &,將它放到背景也是好的方法,如此您可以立即繼續在同一個指令行工作 (updatedb &)。這個指令通常當成每日 cron 工作 (請參閱 cron.daily) 來執行。

find [選項]

使用 find,搜尋指定目錄中的檔案。第一個引數會指定從什麼目錄開始搜尋。選項 -name 的後面必須有一個搜尋字串,搜尋字串也可以包含萬用字元。不同於使用資料庫進行搜尋的 locatefind 會掃描實際目錄。

3.3.1.2. 用於存取檔案內容的指令

file [選項] [檔案]

使用 file 可以偵測指定檔案的內容。

-z

可用來嘗試檢視壓縮檔案中的內容。

cat [選項] 檔案

cat 指令可在不中斷的前提下顯示檔案的內容、列印整個內容至螢幕。

-n

在輸出的左邊界加上編號

less [選項] 檔案

此指令可以用來瀏覽指定檔案的內容。使用 PgUpPgDn 向上或向下捲動螢幕的一半頁面,或者使用空格鍵捲動整個螢幕頁面。使用 HomeEnd 移至檔案的開頭或結尾。按 Q 結束程式。

grep [選項] 搜尋字串 檔案

grep 指令可以在指定檔案中搜尋特定的搜尋字串。如果找到搜尋字串,指令會顯示所找到出現搜尋字串的一行文字以及檔案名稱。

-i

忽略大小寫

-H

只顯示相關檔案的名稱,不是文字行

-n

另外顯示發現符合資料的行數

-l

只列示沒有出現搜尋字串的檔案

diff [選項] 檔案 1 檔案 2

diff 指令會比較任何兩個檔案的內容。程式產生的輸出,會列示不相符的所有行。只需要傳送程式變動的地方,而不是整個原始程式碼的程式設計人員經常使用此指令。

-q

只報告兩個檔案是否不同

-u

產生"制式"差異,使輸出更方便閱讀

3.3.1.3. 檔案系統

mount [選項] [設備] 裝載點

此指令可以用來裝載任何資料媒體,例如硬碟、CD-ROM 光碟機以及其他磁碟機至 Linux 檔案系統的目錄。

-r

唯讀裝載

-t 檔案系統

指定檔案系統,通常 ext2 代表 Linux 硬碟、msdos 代表 MS-DOS 媒體、vfat 代表 Windows 檔案系統、iso9660 代表 CD

至於未定義在檔案 /etc/fstab 中的硬碟,也必須指定設備類型。在此狀況下,只有 root 可以裝載它。如果要讓其他使用者也能裝載該檔案系統,請在 /etc/fstab 的適當行,輸入選項 user (用逗點分開) 並儲存所做的變更。如需更多詳細資訊,請參閱 mount(1) man 頁面。

umount [選項] 裝載點

此指令會檔案系統中的已裝載磁碟機解除裝載。若要防止資料遺失,請在從磁碟機取出抽取式資料媒體前執行此指令。一般情況下,只有 root 可以執行 mountumount 這兩個指令。若要讓其他使用者執行這些指令,請編輯 /etc/fstab 檔案,為相關的磁碟機指定選項 user

3.3.2. 系統指令

下節列出一些擷取系統資訊與程序以及網路控制時最重要的指令。

3.3.2.1. 系統資訊

df [選項] [目錄]

df (磁碟可用空間) 指令,在未加上任何選項時,會顯示所有磁碟空間的資訊、目前使用的磁碟空間以及所有裝載磁碟機的可用空間。如果指定目錄,只會顯示該目錄所在磁碟機的資訊。

-h

顯示佔用的區塊數目 (GB、MB 或 KB) -- 以人類可判讀的格式。

-T

檔案系統的類型 (ext2、nfs 等等)

du [選項] [路徑]

在執行時未加上任何參數,此指令會顯示目前目錄的檔案和子目錄所佔用的總磁碟空間。

-a

顯示每一個別檔案的大小

-h

人類可判讀之格式的輸出

-s

只顯示計算的總共大小

free [選項]

指令 free 會顯示關於 RAM 以及交換空間使用的相關資訊,顯示二者類別的總計以及使用總數。如需更多詳細資訊,請參閱節 10.1.6, "free 指令" (↑參考)

-b

以位元組為單位的輸出

-k

以 KB 為單位的輸出

-m

以 MB 為單位的輸出

date [選項]

此簡單程式會顯示目前的系統時間。如果以 root 的身分執行,它也可以用來變更系統時間。如需有關此程式的詳細資料,請參閱 date(1) man 頁面。

3.3.2.2. 程序

top [選項]

top 提供目前執行程序的快速概觀。按 H 存取頁面,簡略說明主要選項來自訂程式。

ps [選項] [程序 ID]

如果執行時不加任何選項,此指令會顯示由您啟動的程式或程序的相關表格。此指令的選項前面不會加上連字號。

aux

顯示所有程序的詳細清單,與擁有者無關

kill [選項] 程序 ID

不幸地,有時候程式無法以正常方式終止。大部份情況下,您仍然可以指定相關的程序 ID 來執行 kill 指令,以便停止執行中的程式 (請參閱 topps)。kill 會傳送 TERM 訊號,指示程式關閉自已。如果此指令沒有作用,可以使用以下參數:

-9

傳送 KILL 訊號而非 TERM 訊號,這時多半可結束所指定的程序。

killall [選項] 程序名稱

此指令類似 kill,但是使用處理程序名稱 (而非處理程序 ID) 做為引數,刪除所有該名稱的程序。

3.3.2.3. 網路

ping [選項] 主機名稱或 IP 位址

ping 指令是標準工具,可用來測試 TCP/IP 網路的基本功能。它會傳送小的資料封包至目的地主機,要求立即回應。如果有作用,ping 會顯示訊息,指示網路連結基本上是正常的。

-c 數字

決定要傳送的封包總數,並在分派後結束 (依預設,沒有限制設定)

-f

flood ping:儘可能傳送很多資料封包,一種常用方法,保留給 root 來測試網路

-i 數值

指定兩個資料封包之間的時間間隔 (秒) (預設值:1 秒鐘)

nslookup

網域名稱系統會將網域名稱解析成 IP 位址。使用此工具,傳送查詢至名稱伺服器 (DNS 伺服器)。

telnet [選項] 主機名稱或 IP 位址 [連接埠]

Telnet 實際上是一種網際網路通訊協定,供您透過網路在遠端主機上工作。Telnet 也是使用這種通訊協定的 Linux 程式名稱,用來在遠端電腦進行作業。

[Warning]警告

不要在第三方可以 "監聽" 的網路上使用 telnet。特別是在網際網路上,使用加密傳送方法,例如 ssh,防止密碼被惡意使用的危險 (請參閱 ssh 的 man 頁面)。

3.3.2.4. 其他

passwd [選項] [使用者名稱]

使用者可以使用此指令,在任何時候變更他們自己的密碼。管理員 root 可以使用此指令,變更系統上任何使用者的密碼。

su [選項] [使用者名稱]

su 指令可以從執行中的工作階段改用不同的使用者名稱登入。指定使用者名稱和相關密碼。root 使用者不會收到提供密碼的要求,因為 root 己授權為可以使用任何使用者的身份。使用此指令時如果未指定使用者名稱,系統將提示您輸入 root 密碼並變更為超級使用者 (root)。

-

使用 su -,為不同使用者啟動登入外圍程序。

halt [選項]

若要避免資料遺失,您應該永遠使用此程式來關閉系統。

reboot [選項]

功能相同於 halt,只是系統會立即重新啟動。

clear

此指令會清除主控台的可見區域。它沒有任何選項。

3.3.3. 更多資訊

本章節列示很多指令。如需關於其他指令或更詳細的資訊,建議參閱 O'Reilly 出版的《Linux in a Nutshell》