在 Linux 中,您可以使用功能和圖形使用者介面相同的指令行,並且輕鬆切換使用它們。若要在 KDE 中從圖形使用者介面來啟動終端機視窗,請按一下面板中的 Konsole 圖示。在 GNOME 中,則請按一下面板的「GNOME 終端機」圖示。
這樣畫面就會出現 Konsole 或是 GNOME 終端機視窗,並在第一行顯示提示文字,如 圖 15-1 所示。這段提示文字通常會顯示您的登入名稱 (即本範例中的 tux)、電腦的主機名稱 (即此處的 knox),以及目前的路徑 (在此範例中就是用波狀符號 ~ 標示的根目錄)。如果您是登入遠端電腦,這段資訊就會永遠為您顯示目前您正在運作的系統。當游標出現在這個提示名稱之後,您可以將指令直接傳送給電腦系統。
圖 15-1 Bash 終端機視窗範例
指令是由幾個元件所組成。第一個元件一定是實際的指令,後面跟著參數或選項。您可以輸入指令,然後使用 ←、→、Backspace、Del 和 Space 進行編輯。您也可以加入選項,或是更正輸入錯誤。這個指令會在您按 Enter 之後開始執行。
重要: 沒消息就是好消息
外圍程序不會提供詳細資訊 (Verbose):相對於某些圖形使用者介面,通常外圍程序不會在指令完成執行時提供確認訊息。訊息只會在發生問題或錯誤時才會出現。
同時,請注意會刪除物件的指令。當您在輸入類似 rm 等刪除檔案的指令之前,請務必考慮自己是否真的要刪除該物件:因為指令執行之前不會先詢問您,並永遠刪除該物件。
請透過下列簡單範例來觀察指令結構:用來列出目錄內容的 ls 指令。這個指令可包含或不包含選項情況下使用。只輸入 ls 指令可以顯示目前目錄的內容:
圖 15-2 ls 指令
不同於其他作業系統,Linux 中的檔案可能包含副檔名 (例如 .txt),但是並不是絕對需要。因此這會造成 ls 輸出中的檔案和資料夾難以進行區分。依預設,您可以透過顏色來區分:目錄通常會顯示為藍色,檔案會顯示為黑色。
另外一種取得目錄內容更多細節的較佳方法,就是搭配選項字串來使用 ls 指令。選項可以改變指令執行的方式,讓您能夠指引它執行特定的工作。選項會用空白來與指令區隔,而且開頭會加上連字號。指令 ls -l 可以完整詳細顯示相同目錄的內容 (長式清單):
圖 15-3 ls -l 指令
在每個物件名稱的左邊會有好幾個欄位,其中會顯示與該物件有關的資訊。最重要的是:第一欄會顯示物件的檔案類型 (在本範例中,d 是指目錄,而 - 是指一般檔案)。接下來的 9 個欄位則會顯示該物件的使用者許可權。欄位 11 和 12 則會顯示檔案擁有者和群組 (在本範例中是指 tux 和 users)。如需更多有關 Linux 使用者許可權和使用者概念的詳細資訊,請參閱節 15.2, 使用者和存取許可權。接下來的欄位會顯示檔案大小,單位是位元組。接著顯示上次變更的日期和時間。最後一個欄位則顯示物件名稱。
如果您希望檢視更多資訊,請結合兩個選項來執行 ls 指令,即輸入 ls -la。這時外圍程序會同時在目錄中顯示隱藏檔案,即前面標示點符號的檔案 (例如,.hiddenfile)。
並非所有人都必須記住所有指令的所有選項。如果您記得指令名稱但是不確定相關選項,您可以輸入指令,依序在後面加上空格以及 --help。有許多指令可以使用這個 --help 選項。輸入 ls --help,可顯示有關 ls 指令的所有選項。
因為外圍程序不會像檔案管理員以樹狀結構檢視方式來顯示圖形概觀的目錄和檔案,因此對 Linux 系統的預設目錄結構有些基本了解,將會產生許多幫助。您可以將目錄視為儲存檔案、程式及子目錄的電子資料夾。階層中最上層的目錄就是根目錄,以 / 表示。從此處可以存取其他所有目錄的位置。
摘錄自標準目錄網路樹顯示 linux 的標準目錄網路樹,以及範例使用者的主目錄 yxz、linux 和 tux。/home 目錄包含個別使用者可以儲存個人檔案的目錄。
附註: 網路環境中的主目錄
當您正在網路環境中工作時,您的主目錄並不一定會稱為 /home。它可能會映射到檔案系統的任何目錄。
下列清單提供 Linux 中標準目錄的簡短描述。
圖 15-4 摘錄自標準目錄網路樹
表 15-1 標準目錄網路樹的概觀
/ |
根目錄,目錄網路樹的起點 |
/home |
使用者個人目錄 |
/etc |
系統組態的重要檔案 |
/bin、/sbin |
開機程序早期需要的程式 (/bin),和供管理員使用的程式 (/sbin) |
/usr、/usr/local |
所有應用程式和本機的分散獨立式延伸 (/usr/local) |
/usr/bin、/usr/sbin |
一般可存取的程式 (/usr/bin) 和保留供系統管理員使用的程式 ( /usr/sbin) |
/usr/share/doc |
各種文件檔 |
/tmp、/var/tmp |
暫存檔(勿將需要的檔案儲存在此目錄中) |
/opt |
選擇性軟體,大型的加入套裝程式 (例如 KDE、GNOME、Netscape) |
若要為特定檔案或目錄指定位置,您必須指定指向該目錄或檔案的路徑。指定路徑的方法有下列兩種:
從根目錄到個別檔案的完整 (絕對) 路徑
從目前目錄作為起點的路徑 (相對路徑)
絕對路徑永遠會以斜線作為開頭。相對路徑不會以斜線作為開頭。
附註: Linux 會區分大小寫
Linux 會區分檔案系統中的大寫和小寫。例如,輸入 test.txt 或 Test.txt 對 Linux 來說是不同的意義。請在輸入檔名或路徑時注意這點。
若要變更目錄,請使用 cd 指令。
若要切換至您的主目錄,請輸入 cd。
使用一個點可表示目前的目錄 ()。)。這主要用於其他指令 (cp、mv、…)。
網路樹中的上一層目錄是由兩個點表示 ()。)。例如,若要切換至目前目錄的父目錄,請輸入 cd ..。
節 15.1.3, 使用目錄和檔案中的 cd 指令是使用相對路徑。您可以使用絕對路徑。舉例來說,假設您希望將主目錄的檔案複製到 /tmp 的子目錄:
首先,請從主目錄建立位在 /tmp 的子目錄:
如果目前您不是在自己的主目錄下,請輸入 cd ~ 切換至您的主目錄。無論您是在檔案系統的任何位置,您只要輸入 cd ~ 就可切換到您的主目錄。
在您的主目錄中,輸入 mkdir /tmp/test。mkdir 代表 make directory (建立目錄)
。這個指令會在 /tmp 目錄中建立名為 test 的新目錄。這個範例是使用絕對路徑來建立目錄。
為了檢查產生的結果,現在讓我們輸入 ls -l /tmp。這時 /tmp 目錄的內容清單中應該會出現 test 這個新目錄。
現在,請在主目錄中建立新檔案,並使用相對路徑將其複製到 /tmp/test 目錄。
輸入 touch myfile.txt。配合 myfile.txt 選項的 touch 指令,將會在目前目錄中建立一個全新、名為 myfile.txt 的空白檔案。
請輸入 ls -l,檢查執行結果。這個新檔案應該會出現在內容清單中。
輸入 cp myfile.txt ../tmp/test。這樣會將 myfile.txt 複製到目錄 /tmp/test 中,而且不改變檔案名稱。
請輸入 ls -l /tmp/test,檢查執行結果。這時 /tmp/test 目錄的內容清單中應該會出現 myfile.txt 這個新檔案。
若要列示其他使用者的主目錄內容,請輸入 ls ~username。在圖 15-4的範例網路目錄樹中,其中一個範例使用者是 tux。在此範例例中,ls ~tux 會列示 tux 的主目錄內容。
附註: 處理檔名或目錄名稱中的空白
如果檔名中包含空格,請在空白前面使用反斜線 (\) 來避免發生空格,或是將檔名包括在單引號或是雙引號中。否則,Bash 會將類似 My Documents 的檔案名稱,解譯成為兩個檔案或是兩個目錄。單引號和雙引號的差別,在於使用雙引號時會產生不同的展開方式。使用單引號,可以確保外圍程序只會解譯單引號所括住的字串。
使用 Bash 輸入指令可以包含大量輸入。下段內容將介紹一些 Bash 功能,讓您的工作能夠更輕鬆,並省去大量輸入的需要。
依預設,Bash 會 記憶
您輸入過的指令。這項功能稱為歷程。若要重複需要的指令,請按 ↑,直到該指令顯示在指令提示字元。按 ↓ 可往前翻閱以前輸入的指令清單。使用 Ctrl+R 可在歷程中搜尋。
按 Enter 以執行選取的指令之前,您可以編輯該指令,例如變更檔案的名稱。若要編輯指令行,只要使用方向鍵將游標移至想要的位置,然後開始輸入。
在輸入開頭字母之後補齊成該檔案或目錄的完整檔案名稱,是 Bash 提供的另外一項有用工具。若要這樣做,請輸入第一個字母,然後按 Tab。如果該檔名或路徑可以唯一識別,該名稱就會立刻補齊,而且游標會移至該檔名的最後面。您可以接著輸入指令的下一個選項 (若有需要)。如果檔名或路徑無法提供唯一識別 (因為有好幾個檔名開頭都是相同字母),檔名或路徑就只會重複補齊到可能有好幾種選項的位置。您可以接著第二次按 Tab,取得這些選項的清單。在這個動作之後,您可以輸入檔案或路徑的下一個字母,然後按 Tab 再嘗試補齊。在配合 Tab 補齊檔名和路徑時,您可以同時檢查您要輸入的檔案或路徑是否確實存在 (而且可以確定提供正確拼字)。
外圍程序提供的另一個便利之處,就是可以在路徑展開時使用萬用字元。萬用字元是指可以代表其他字元的字元。Bash 共用三種不同的萬用字元類型:
完全相符的任何字元
符合任何數目的字元
符合方括號中指定群組中的某個字元,在此是由字串 set 表示。在使用 set 時,您也可以使用語法 [:class:] 來指定字元類別,其中可指定 alnum、alpha 與 ascii 等類別。
利用 ! 或 ^,於群組 ([!set]) 開端,會符合 set 以外的任一個字元。
假設您的 test 目錄包含 Testfile、Testfile1、Testfile2 和 datafile 幾個檔案。
指令 ls Testfile? 會列出 Testfile1 和 Testfile2 這兩個檔案。
指令 ls Testfile? 會列出 Testfile1 和 Testfile2 這兩個檔案。
使用 ls Test*,清單也會包括 Testfile。
指令 ls *fil* 會顯示所有範例檔案。
使用 set 萬用字元處理結尾字元為數字的所有範例檔案:ls Testfile[1-9],或使用類別 ls Testfile[[:digit:]]。
在三種萬用字元中,應用最廣泛的是星號。它可以用來將某一目錄中的所有檔案,複製到另一個目錄,或者使用一個指令來刪除所有檔案。例如指令 rm *fil*,會刪除目前目錄中,名稱中包含字串 fil 的所有檔案。
Linux 包括兩個可以直接在外圍程序檢視文字檔案的小程式:less 和 more。不必啟動編輯器就可以讀取檔案,例如 Readme.txt,只要輸入 less Readme.txt 便可在主控台視窗中顯示文字。使用空格鍵往下捲動一頁。使用 Page Up 和 Page Down 鍵,往前或往回捲動文件。若要結束 less,請按 Q。
除了 less 外,您也可以使用較舊的 more 程式。不過,因為它不能讓您往回捲動,所以不是很方便。
程式 less 的名稱來源是得自 less is more (少即是多) 的俗諺,也且可以方便用來檢視指令的輸出。要知道如何使用,請參閱重新導向和管道。
正常情況下,外圍程序的標準輸出是您的螢幕或主控台視窗,而標準輸入是鍵盤。然而,外圍程式還提供一項功能,可讓您將輸入或輸出重新導向到另一個物件,例如檔案或其他指令。舉例來說,在配合 > 和 < 符號情況下,您可以將指令輸出轉遞給檔案 (輸出重新導向),或是將檔案當作指令的輸入來使用 (輸入重新導向)。例如,當您希望執行將類似 ls 的指令輸出寫入到檔案時,請輸入 ls -l > file.txt。這樣就可建立名為 file.txt 的檔案,其中會包含由 ls 指令所產生您目前所在目錄的內容。然而,如果已經有存在檔名 file.txt 的檔案,這個指令就會覆寫現有的檔案。若要預防這個情形,請使用 >>。這樣在輸入 ls -l >> file.txt 之後,便只會將 ls 指令的輸出結果附加到目前已存在的 file.txt 檔案。如果這個檔案不存在,接著就會建立。
有時這個功能也可以將檔案作為指令的輸入。舉例來說,您可以使用 tr 指令來置換從檔案重新導向的字元,再將結果寫入標準輸出,即您的螢幕。假設您要將上述範例所指 file.txt 中的所有 t 字元置換成 x,並將結果列印到螢幕上。輸入 tr t x < file.txt 便可完成這項工作。
和標準輸出一樣,標準錯誤輸出也會傳送至主控台。若要將標準錯誤輸出重新導向至名稱為 errors 的檔案,請在相對應的指令附加 2> errors 。如果您附加 >& alloutput,標準輸出和標準錯誤會儲存至名稱為 alloutput 的檔案。
使用管線或管道也是一種重新導向,雖然使用管道時不會受到檔案限制。配合 (|) 時,您可以結合好幾種指令,將其中一項指令的輸出當作下一個指令的輸入。舉例來說,若要使用 less 來檢視內容或是目前所在目錄,請輸入 ls | less。這種做法只有在使用 ls 的標準輸出太長的時候,才有意義。例如,如果您檢視 dev 目錄內容時使用 ls /dev,視窗中只會看到一小部份。此時,請使用 ls /dev | less 檢視完整清單。
現在您已經建立一些檔案和目錄,請考慮歸檔和資料壓縮的用途。假設您將整個 test 目錄包裝成一個檔案,您可以儲存至 USB 隨身碟當成備份或透過電子郵件傳送。若要執行這個動作,請使用指令 tar (用於磁帶歸檔設備)。使用 tar --help,檢視 tar 指令的所有選項。在此說明最重要的選項:
(用於建立) 建立新歸檔。
(用於表格) 顯示歸檔的內容。
(用於擷取) 解開歸檔。
(用於詳細) 建立歸檔時,在螢幕顯示所有檔案。
(用於檔案) 選擇要歸檔的檔案名稱。建立歸檔時,此選項必須永遠在最後面。
若要將 test 目錄含所有檔案與子目錄包裝至一個名稱為 testarchive.tar 的歸檔,請執行下列動作:
開啟外圍程序。
使用 cd 切換到您的主目錄,test 目錄就位在該目錄中。
輸入 tar -cvf testarchive.tar test。-c 選項會建立歸檔,使它依照 -f 的指示成為一個檔案。-v 選項會在處理過程中列出檔案。
使用 tar -tf testarchive.tar 檢視歸檔檔案的內容。
test 目錄及其所有檔案與目錄會在磁碟中保留不變。若要解開歸檔,請輸入 tar -xvf testarchive.tar,但此時請先不要嘗試此選項。
如果要進行檔案壓縮,較常使用的選擇是使用 gzip,或者使用 bzip2 來取得更好的壓縮比例。 只要輸入 gzip testarchive.tar (或 bzip2 testarchive.tar,但這個範例是使用 gzip)。使用 ls,現在查看檔案 testarchive.tar 是否已經不在該處,而且已經建立 testarchive.tar.gz 檔案。此檔案比較小,因此更適合透過電子郵件傳送或儲存在 USB 隨身碟。
現在,在先前建立的 test2 目錄解開此檔案。要這樣做,請輸入 cp testarchive.tar.gz test2,將檔案複製至該目錄。使用 cd test2 變更至目錄。副檔名為 .tar.gz 的壓縮歸檔,可以使用 gunzip。輸入 gunzip testarchive.tar.gz,會產生檔案 testarchive.tar,然後需要使用 tar -xvf testarchive.tar 來解開或展開。您也可以透過 tar -xvf testarchive.tar.gz (不用再加入 -z 選項),用一個步驟就解壓縮和擷取壓縮歸檔。使用 ls,您可以看到新的 test 目錄已經建立,而且與主目錄的 test 目錄,內容相同。
在此課程之後,您應該熟悉 Linux 外圍程序或指令行的基礎概念。您可以使用 rm 和 rmdir 指令,刪除不同的測試檔案與目錄,清除您的主目錄。請在節 15.3, 重要的 Linux 指令中,找出最重要指令的清單及其功能的簡要說明。