Linux學習第三天--使用命令
在這之前,我們已經知道了一系列神祕的命令,每個命令都有自己奇妙的 選項和引數。在這一章中,我們將試圖去掉一些神祕性,甚至建立我們自己 的命令。這一章將介紹以下命令:
- type 說明怎麼解釋一個命令名
- which 顯示會執行哪個可執行程式
- man 顯示命令手冊頁
- apropos – 顯示一系列適合的命令
- info 顯示命令
- whatis 顯示一個命令的簡介描述
- alias 建立命令別名
什麼是命令
命令可以是下面四種形式之一:
- 是一個可執行程式,就像我們所看到的位於目錄/usr/bin 中的檔案一樣。 這一類程式可以是用諸如 C 和 C++語言寫成的程式編譯的二進位制檔案, 也可以是由諸如shell,perl,python,ruby等等指令碼語言寫成的程式 。
- 是一個內建於 shell 自身的命令。bash 支援若干命令,內部叫做 shell 內部命令 (builtins)。例如,cd 命令,就是一個 shell 內部命令。
- 是一個 shell 函式。這些是小規模的 shell 指令碼,它們混合到環境變數中。 在後續的章節裡,我們將討論配置環境變數以及書寫 shell 函式。但是現在, 僅僅意識到它們的存在就可以了
- 是一個命令別名。我們可以定義自己的命令,建立在其它命令之上。
識別命令
這經常很有用,能確切地知道正在使用四類命令中的哪一類。Linux 提供了一對方法來 弄明白命令型別。
type - 顯示命令的型別
type命令是shell內部命令,它會顯示命令的類別,給出一個特定的命令名(做為引數)。 它像這樣工作:
type command
“command”是你要檢測的命令名。這裡有些例子:
[email protected]:~/playground# type type
type is a shell builtin
[email protected]:~/playground# type ls
ls is aliased to `ls --color=auto'
[email protected]:~/playground# type cp
cp is hashed ( /bin/cp)
我們看到這三個不同命令的檢測結果。注意,ls 命令(在 Fedora 系統中)的檢查結果,ls 命令實際上 是 ls 命令加上選項”–color=auto”的別名。現在我們知道為什麼 ls 的輸出結果是有顏色的!
which -顯示一個可執行程式的位置
有時候在一個作業系統中,不只安裝了可執行程式的一個版本。雖然在桌面系統中這並不普遍, 但在大型伺服器中卻很平常。為了確定所給定的執行程式的準確位置,使用 which 命令:
[email protected]:~/playground# which mv
/bin/mv
[email protected]:~/playground# which cp
/bin/cp
這個命令只對可執行程式有效,不包括內建命令和命令別名,別名是真正的可執行程式的替代物。 當我們試著使用 shell 內建命令時,例如,cd 命令,我們或者得不到迴應,或者是個錯誤資訊
[email protected]:~/playground# which cd
[email protected]:~/playground# which mv
/bin/mv
查詢命令文件
help - 得到shell內建命令的幫助文件
bash 有一個內建的幫助工具,可供每一個 shell 內建命令使用。輸入“help”,接著是 shell 內部命令名。例如:
[email protected]:~/playground# help cd
cd: cd [-L|[-P [-e]] [[email protected]]] [dir]
Change ..
注意表示法:出現在命令語法說明中的方括號,表示可選的專案。一個豎槓字元 表示互斥選項。在上面 cd 命令的例子中:
cd [-L|-P] [dir]
這種表示法說明,cd 命令可能有一個“-L”選項或者“-P”選項,進一步,可能有引數“dir”。
- -help - 顯示用法資訊
許多可執行程式支援一個 --help 選項,這個選項是顯示命令所支援的語法和選項說明。例如:
[email protected]:~/playground# mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
一些程式不支援 --help 選項,但不管怎樣試一下。這經常會導致輸出錯誤資訊,但同時能 揭示一樣的命令用法資訊。
man - 顯示程式手冊頁
許多希望被命令列使用的可執行程式,提供了一個正式的文件,叫做手冊或手冊頁(man page)。一個特殊的叫做 man 的分頁程式,可用來瀏覽他們。它是這樣使用的:
man program
“program”是要瀏覽的命令名。
手冊文件的格式有點不同,一般地包含一個標題、命令語法的綱要、命令用途的說明、 以及每個命令選項的列表和說明。然而,手冊文件通常並不包含例項,它打算 作為一本參考手冊,而不是教程。作為一個例子,瀏覽一下 ls 命令的手冊文件:
[email protected]:~# man ls
在大多數 Linux 系統中,man 使用 less 工具來顯示參考手冊,所以當瀏覽文件時,你所熟悉的 less 命令都能有效。
man 所顯示的參考手冊,被分成幾個章節,它們不僅僅包括使用者命令,也包括系統管理員 命令、程式介面、檔案格式等等。下表描繪了手冊的佈局:
手冊頁的組織形式
章節 | 內容 |
---|---|
1 | 使用者命令 |
2 | 程式介面核心系統呼叫 |
3 | C 庫函式程式介面 |
4 | 特殊檔案,比如說裝置結點和驅動程式 |
5 | 檔案格式 |
6 | 遊戲娛樂,如螢幕保護程式 |
7 | 其他方面 |
8 | 系統管理員命令 |
有時候,我們需要檢視參考手冊的特定章節,從而找到我們需要的資訊。 如果我們要查詢一種檔案格式,而同時它也是一個命令名時,這種情況尤其正確。 沒有指定章節號,我們總是得到第一個匹配項,可能在第一章節。我們這樣使用 man 命令, 來指定章節號:
man section search_term
例如:
[email protected]:~# man 5 passwd
命令執行結果會顯示檔案 /etc/passwd 的檔案格式說明手冊。
apropos - 顯示適當的命令
也有可能搜尋參考手冊列表,基於某個關鍵字的匹配項。雖然很粗糙但有時很有用。 下面是一個以”floppy”為關鍵詞來搜尋參考手冊的例子:
[email protected]:~# apropos floppy
create_floppy_devices (8) - udev callout to create all possible
輸出結果每行的第一個欄位是手冊頁的名字,第二個欄位展示章節。注意,man 命令加上”-k”選項, 和 apropos 完成一樣的功能。
whatis - 顯示非常簡潔的命令說明
whatis 程式顯示匹配特定關鍵字的手冊頁的名字和一行命令說明
info - 顯示程式Info條目
GNU 專案提供了一個命令程式手冊頁的替代物,稱為”info”。info 內容可通過 info 閱讀器 程式讀取。info 頁是超級連結形式的,和網頁很相似。
info 程式讀取 info 檔案,info 檔案是樹型結構,分化為各個結點,每一個包含一個題目。 info 檔案包含超級連結,它可以讓你從一個結點跳到另一個結點。一個超級連結可通過 它開頭的星號來辨別出來,把游標放在它上面並按下 enter 鍵,就可以啟用它。
輸入”info”,接著輸入程式名稱,啟動 info。下表中的命令,當顯示一個 info 頁面時, 用來控制閱讀器。
命令 | 行為 |
---|---|
? | 顯示命令幫助 |
PgUp or Backspace | 顯示上一頁 |
PgDn or Space | 顯示下一頁 |
n | 下一個 - 顯示下一個結點 |
p | 上一個 - 顯示上一個結點 |
u | |
Enter | 啟用游標位置下的超級連結 |
q | 退出 |
到目前為止,我們所討論的大多數命令列程式,屬於 GNU 專案”coreutils”包,所以輸入:
[email protected]:~/playground# info coreutils