1. 程式人生 > >Linux學習第三天--使用命令

Linux學習第三天--使用命令

在這之前,我們已經知道了一系列神祕的命令,每個命令都有自己奇妙的 選項和引數。在這一章中,我們將試圖去掉一些神祕性,甚至建立我們自己 的命令。這一章將介紹以下命令:

  • type 說明怎麼解釋一個命令名
  • which 顯示會執行哪個可執行程式
  • man 顯示命令手冊頁
  • apropos – 顯示一系列適合的命令
  • info 顯示命令
  • whatis 顯示一個命令的簡介描述
  • alias 建立命令別名

什麼是命令

命令可以是下面四種形式之一:

  1. 是一個可執行程式,就像我們所看到的位於目錄/usr/bin 中的檔案一樣。 這一類程式可以是用諸如 C 和 C++語言寫成的程式編譯的二進位制檔案, 也可以是由諸如shell,perl,python,ruby等等指令碼語言寫成的程式 。
  2. 是一個內建於 shell 自身的命令。bash 支援若干命令,內部叫做 shell 內部命令 (builtins)。例如,cd 命令,就是一個 shell 內部命令。
  3. 是一個 shell 函式。這些是小規模的 shell 指令碼,它們混合到環境變數中。 在後續的章節裡,我們將討論配置環境變數以及書寫 shell 函式。但是現在, 僅僅意識到它們的存在就可以了
  4. 是一個命令別名。我們可以定義自己的命令,建立在其它命令之上。

識別命令

這經常很有用,能確切地知道正在使用四類命令中的哪一類。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