摘要
圖形化使用者介面對 Linux 來說變得日益重要,但是使用滑鼠並不一定是進行日常工作的最好方法。指令行提供了高度的彈性及效率。當您控制慢速網路上的電腦,或是要在 xterm 的指令行以根的身分執行工作時,以文字為基礎的應用程式更為重要。Bash 外圍程序是 SUSE Linux 的預設指令行解譯器。
Linux 是一種多重使用者系統,可存取由使用者權限所控制的檔案。無論是使用指令行或 GUI,它都有助於瞭解權限概念。使用指令行時,有數種重要的指令。從指令行設定系統時,通常會使用 vi 文字編輯器。許多系統管理員和開發人員都常使用它。
在 KDE 工作列中,有一個繪製為貝殼的顯示器之圖示。 當您按下這個圖示,就會開啟可在其中輸入指令的終端機視窗。主控台就是一般執行 Bash 的終端機程式 (Bourne again shell),這是 GNU 專案所開發程式的一部分。請在 GNOME 桌面上,按一下上方面板顯示電腦螢幕的圖示,啟動一般執行 Bash 的終端機。
一旦您開啟該外圍程序,會在第一列看到提示符號。提示名稱通常由使用者名稱、主機名稱和現行路徑組成,也可以自行設定。當游標出現在這個提示名稱之後,您可以將指令直接傳送給電腦系統。
指令是由幾個元件所組成。第一個元件一定是實際的指令,後面跟著參數或選項。指令會在您按 Enter 時執行。在這麼做之前,您可以輕易地編輯指令行、新增選項或修正打錯的字。有一個最常用的指令是 ls, 可以單獨或和引數一起使用。只輸入 ls 指令可以顯示目前目錄的內容。
選項會以連字號開始。例如,指令 ls -l 可以顯示同一個目錄內容的全部細節 (長式清單)。在每一個檔案名稱旁可以看到檔案建立日期、檔案大小 (以位元組為單位),以及進一步的細節,這些將在稍後說明。許多指令都有一個重要的選項 --help。輸入 ls --help,可顯示有關 ls 指令的所有選項。
您必須取得"引號"使用權限。如果檔名中包含空格,請使用反斜線 (\) 來避免發生空格,或是將檔名包括在單引號或是雙引號中。否則,Bash 會將類似 My Documents 的檔案名稱,解譯成為兩個檔案或是兩個目錄。單引號和雙引號的差別,在於使用雙引號時會產生不同的展開方式。使用單引號,可以確保外圍程序只會解譯單引號所括住的字串。
若要有效使用外圍程序,瞭解一些有關 Linux 系統的檔案與目錄結構知識非常有用。您可以將目錄視為儲存檔案、程式及子目錄的電子資料夾。階層中最上層的目錄就是根目錄,以 / 表示。從此處可以存取其他所有目錄的位置。
/home 目錄包含每個使用者可以儲存個人檔案的目錄。圖形 27.1, "摘錄自標準目錄網路樹" 顯示 Linux 中的標準目錄樹,以及範例使用者 xyz、linux 和 tux 的主目錄。Linux 系統的目錄網路樹有一個置於 Filesystem Hierarchy Standard (FHS) 後的功能性結構。下列清單提供 Linux 中標準目錄的簡短描述。
/根目錄,目錄網路樹的起點
/home私人使用者目錄
/dev代表硬體元件的裝置檔案
/etc系統組態的重要檔案
/etc/init.d啟動程序檔
/usr/bin一般可存取的程式
/bin啟動過程早期需要的程式
/usr/sbin保留給系統管理員的程式
/sbin保留給系統管理員而且啟動時需要的程式
/usr/includeC 編譯器標題檔
/usr/include/g++C++ 編譯器標題檔
/usr/share/doc各種文件檔
/usr/share/man系統手冊頁面 (man 頁面)
/usr/src系統軟體的原始程式碼
/usr/src/linux核心原始程式碼
/tmp、/var/tmp暫存檔
/usr所有應用程式
/var組態檔 (例如,連結自 /usr 的檔案)
/var/log系統日誌檔
/var/adm系統管理資料
/lib共用的程式庫 (用於動態連結的程式)
/proc程序檔案系統
/syssystem 檔案系統,為核心之所有設備資訊的集中存放位置
/usr/local本機,分散獨立延伸
/opt選擇性軟體,較大的附加套裝軟體 (例如 KDE、GNOME、Netscape)
外圍程序提供兩個可以讓工作更輕鬆的重要功能:
若要重複之前輸入的指令,請按 ↑,直到該指令顯示在指令提示字元。按 ↓ 往前翻閱以前輸入的指令清單。要編輯指令行,只要使用方向鍵將游標移至想要的位置,然後開始輸入。使用 Ctrl-R 可在歷程中搜尋。
在輸入開頭的字母時,若足以識別某個特定檔案的名稱,便補齊為該檔案的完整檔案名稱。若要這樣做,請輸入第一個字母,然後按 Tab 鍵。如果有多個檔案名稱以相同的字母開頭,可按兩次 Tab 來取得清單。
現在您已經知道指令的樣子、SUSE Linux 有哪些目錄以及如何提高使用 Bash 的速度,請在小小練習中應用這些知識。
按一下外圍程序圖示,從 KDE 或 GNOME 桌面開啟主控台。
輸入 ls 指令,查看主目錄的內容。
使用指令 mkdir (表示建立目錄 (make directory)) ,輸入 mkdir test 建立名為 test 的新子目錄。
現在,按 Alt-F2,為 KDE 的 Kate 輸入 kate 或為 GNOME 的 Gedit 輸入 gedit,來啟動編輯器。在編輯器輸入幾個字母,然後將檔案儲存成 Testfile 放到您的主目錄。Linux 會區分大小寫。以此範例為例,是使用大寫的 T。
再次檢視主目錄的內容。不必再次輸入 ls,只要按 ↑ 兩次,ls 指令就會重新顯示在指令提示。要執行指令,請按 Enter。新建的目錄 test 應該會顯示成藍色字母,而 Testfile 應該是黑色的。這是目錄和檔案在主控台中的區分方式。
使用 mv 指令,將 Testfile 移至子目錄 test。 要加速這個動作,可使用展開功能:只要輸入 mv T,然後按 Tab。只要目錄中沒有以這個字母開頭的檔案,外圍程序就會展開檔案名稱並加上字串 estfile。否則,新增一到兩個字母,然後測試 Tab,看看外圍程序現在是否展開名稱。最後,請在展開的檔案名稱後方鍵入一個空格和 test,接著按 Enter 來執行指令。
此時,Testfile 應該會從目錄中消失。再次輸入 ls,再檢查一次。
要知道檔案是否移動成功,請使用 cd test 指令,移入至 test 目錄。現在再輸入 ls。您應該會在清單中看到 Testfile。只輸入 cd,可以從任何地方回到主目錄。
要建立檔案複本,請使用 cp。例如,輸入 cp Testfile Testbackup,會將 Testfile 複製至 Testbackup。再次使用指令 ls 可用來查看二者檔案是否在目錄中。
使用檔案或目錄時,指定正確路徑十分重要。不過,您不需要從相關檔案的根目錄,輸入整個 (絕對) 路徑。您可以從目前的目錄開始。請使用 ~ 來直接設定主目錄位置。這表示有兩種方式可列出 test 目錄中的 Testfile 檔案:使用 ls test 輸入相對路徑或使用 ls ~/test 指定絕對路徑。
要列示其他使用者的主目錄內容,請輸入 ls ~username。在此網路目錄樹中,其中一個範例使用者是 tux。在本案例中,ls ~tux 會列示 tux 的主目錄內容。
使用一個點 (.) 可表示目前的目錄。網路樹中的上一層目錄是由兩個點 (..) 表示。輸入 ls ..,查看目前目錄的父目錄。指令 ls ../.. 會顯示階層中上兩層目錄中的內容。
這裡有另一個範例,示範如何在 SUSE Linux 系統的目錄間移動。
使用指令 cd,變更至您的主目錄。然後輸入 mkdir test2,在其中建立一個名稱為 test2 的目錄。
使用 cd test2 移至新目錄,然後在裏面建立名為 subdirectory 的子目錄。使用擴充功能移至該目錄:輸入 cd su,然後按 Tab。外圍程序將展開目錄名稱的其餘部份。
現在試著將前面建立的檔案 Testbackup 移至目前的目錄 (subdirectory) 無需再次變更目錄。要達成此目的,可指定檔案的相對路徑:mv ../../test/Testbackup . (請注意出現在最後的點)。此指令結尾處的點是必要的,可以告訴外圍程序目前的目錄是檔案移動的目的地。此範例中的 ../../ 會參照您的主目錄。
外圍程序提供的另一個便利之處,就是可以在路徑展開時使用萬用字元。Bash 共用三種不同的萬用字元類型:
完全相符的任何字元
符合任何數目的字元
符合方括號中指定群組中的某個字元,在此是由字串 set 表示。在使用 set 時,您也可以使用語法 [:class:] 來指定字元類別,其中可指定 alnum、alpha 與 ascii 等類別。
在群組 ([!set]) 開頭使用 ! 或 ^,可以比對不同於 set 所指定的字元。
假設您的 test 目錄包含 Testfile、Testfile1、Testfile2 與 datafile 等檔案,指令 ls Testfile? 會列示 Testfile1 和 Testfile2 這兩個檔案。使用 ls Test* 會在清單中加入 Testfile。ls *fil* 顯示所有範例檔案。最後,您可以使用 set 萬用字元,找出最後一個字元是數字的所有範例檔案:ls Testfile[1-9]、使用類別,以及 ls Testfile[[:digit:]]。
在三種萬用字元中,應用最廣泛的是星號。它可以用來將某一目錄中的所有檔案,複製到另一個目錄,或者使用一個指令來刪除所有檔案。例如指令 rm *fil*,會刪除目前目錄中,名稱中包含字串 fil 的所有檔案。
Linux 包括兩個小程式,可以直接在外圍程序檢視文字檔案。不必啟動編輯器就可以讀取檔案,例如 Readme.txt,只要輸入 less Readme.txt 便可在主控台視窗中顯示文字。使用空格鍵往下捲動一頁。使用 Page Up 和 Page Down 鍵,往前或往回捲動文件。若要結束 less,請按 Q。
除了 less 外,您也可以使用較舊的 more 程式。不過,因為它不能讓您往回捲動,所以不是很方便。
程式 less 的名稱來源是得自 less is more (少即是多) 的俗語,也可以方便用來檢視指令輸出。要知道如何使用,請參閱 節 27.1.7, "管道和重新導向"。
正常情況下,外圍程序的標準輸出是您的螢幕或主控台視窗,而標準輸入是鍵盤。若要將指令的輸出轉送到應用程式,例如 less,請使用管道。
要檢視 test 目錄的檔案,可輸入指令 ls test | less。test 目錄的內容即改成使用 less 顯示。如果使用 ls 的標準輸出太長的時候,才有意義。例如,如果您檢視 dev 目錄內容時使用 ls /dev,視窗中只會看到一小部份。此時,請使用 ls /dev | less 檢視完整清單。
也可以將指令的輸出儲存至檔案。例如 echo "test one" > Content 就會產生名為 Content 的新檔案,而且其中會包含 test one 等字。可使用 less Content 檢視該檔案
您也可以使用檔案來輸入指令。例如,tr 會從檔案 Content 重新導向的標準輸入替代字元,並且將結果寫入標準輸出:呼叫 tr t x < Content,將 t 替代成為 x。tr 的輸出會傳送至螢幕。
如果需要內含該輸出的新檔案,請將 tr 的輸出重新導向至檔案。如果要測試這個動作,請變更到 test,並輸入指令 tr t x < ../Content > new。最後,使用 less new 來檢視 new。
和標準輸出一樣,標準錯誤輸出也會傳送至主控台。不過,如果要將標準錯誤輸出重新導向至名稱為 errors 的檔案,請在相對應的指令附加 2> errors 。如果您附加 >& alloutput,標準輸出和標準錯誤會儲存至名稱為 alloutput 的檔案。最後,將指令的輸出附加至現有的檔案,指令後面應該是 >> instead of >。
現在您已經建立一些檔案和目錄,請考慮歸檔和資料壓縮的用途。假設您將整個 test 目錄包裝成一個檔案,您可以儲存至 USB 隨身碟當成備份或透過電子郵件傳送。要這樣做,請使用指令 tar (用於磁帶歸檔設備)。使用 tar --help,檢視 tar 指令的所有選項。在此說明最重要的選項:
(用於建立) 建立新歸檔。
(用於表格) 顯示歸檔的內容。
(用於擷取) 解開歸檔。
(用於詳細) 建立歸檔時,在螢幕顯示所有檔案。
(用於檔案) 選擇要歸檔的檔案名稱。建立歸檔時,此選項必須永遠在最後面。
要將 test 目錄和所有檔案與子目錄包裝至一個名稱為 testarchive.tar 的歸檔,請使用 -c 和 -f 選項。為了測試用途,也請新增 -v 來追蹤歸檔的進度,但這不是必要的選項。使用 cd 變更至 test 目錄所在的主目錄後,輸入 tar -cvf testarchive.tar test。接下來,使用 tar -tf testarchive.tar 檢視封存檔案的內容。test 目錄及其所有檔案與目錄會在磁碟中保留不變。要解開歸檔,請輸入 tar -xvf testarchive.tar,但此時先不要嘗試此選項。
如果要進行檔案壓縮,較常使用的選擇是使用 gzip,或者使用 bzip2 來取得更好的壓縮比例。 只要輸入 gzip testarchive.tar (或 bzip2 testarchive.tar,但是這個範例是使用 gzip)。使用 ls,現在查看檔案 testarchive.tar.gz 是否已經不在該處,而且已經建立 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 目錄,內容相同。
mtools 是一組指令,就像在使用 MS-DOS 檔案系統一樣。包括在 mtools 的指令可以讓您將第一個軟碟機設定成 a:,和在 MS-DOS 一樣,而且指令和 MS-DOS 指令類似,除了前面加上一個 m 不同:
顯示磁碟機 a: 的磁片內容
將檔案 Testfile 複製到磁片
刪除 a: 的 Testfile
以 MS-DOS 格式,製作磁片格式 (與使用 fdformat 指令的結果相同)
讓 a:做為您的目前目錄
在磁片建立子目錄 test
刪除磁片的子目錄 test
在此課程之後,您應該熟悉 Linux 外圍程序或指令行的基礎。您可以使用 rm 和 rmdir 指令,刪除不同的測試檔案與目錄,清除您的主目錄。請在 節 27.3, "重要的 Linux 指令" 中,找出最重要指令的清單及其功能的簡要說明。