1. 程式人生 > >《快樂的Linux命令列》學習記錄——第五章使用命令

《快樂的Linux命令列》學習記錄——第五章使用命令

這一章的命令主要是指:

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

1 到底什麼是命令?

命令的四種類型:

1)是一個可執行程式,類似的檔案位於目錄/usr/bin 中,這一類的程式可以編譯成二進位制檔案。eg:用C和C++語言寫成的程式,也可由指令碼shell,perl,python,ruby寫成的程式;

2)內建於shell自身的命令bash 支援若干命令,eg:cd,就是一個shell內部命令;

3)shll函式,這是個小規模的shell指令碼,它們混合到環境變數中

4)命令別名

2 識別命令

3 type -顯示命令的型別

type 命令是 shell 內部命令,它會顯示命令的類別,給出一個特定的命令名(做為引數)。

type command

“command” 是你要檢測的命令名

[[email protected] ~]$ type type
type is a shell builtins
[[email protected] ~]$ type ls
ls is aliased to ls --color=tty
[[email protected]

~]$ type cp
cp is /bin/cp

ls 命令加上選項 “–color=tty” 的別名。現在我們知道為什麼 ls 的輸出結果是有顏色的!

4 which -顯示一個可執行程式的位置

有時候在大型伺服器的作業系統中,不只安裝了可執行程式的一個版本。
使用which命令:可以確定所給定的執行程式的準確位置。這個命令只對可執行程式有效,不包括內部命令和命令別名,別名是真正的可執行程式的替代物

[[email protected] ~]$ which cd
/usr/bin/which: no cd in
(/opt/jre1.6.0_03/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/opt/jre1
.6.0_03/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/home/me/bin)

當我們試著使用 shell 內部命令時,例如, cd 命令,我們或者得不到迴應,或者是個錯誤資訊

5 得到命令文件

6 help -得到 shell 內部命令的幫助文件

bash有一個內建的幫助工具,可供每個shell內部命令使用。
help的用法:help+shell內部命令名

eg:

[[email protected] ~]$ help cd
cd: cd [-L|-P] [dir]
Change …

一個豎槓字元|:表示互斥選項

cd [-L|-P] [dir]

表明: cd 命令可能有一個 “-L” 選項或者”-P” 選項,進一步,可能有引數“dir”。
雖然 cd 命令的幫助文件很簡潔準確,但它決不是教材

7 --help - 顯示用法資訊

許多可執行程式支援一個 “–help” 選項,這個選項是顯示命令所支援的語法選項說明

[[email protected] ~]$ mkdir --help
Usage: mkdir [OPTION] DIRECTORY…
Create …

一些程式不支援 “–help” 選項,但不管怎樣試一下。這經常會導致輸出錯誤資訊,但同時能揭示一樣的命令用法資訊。

8 man -顯示程式手冊頁

許多希望被命令列使用的可執行程式,提供了一個正式的文件,叫做手冊或手冊頁 (man page)
手冊文件的格式有點不同,一般地包含一個標題,命令語法的綱要,命令用途的說明,和命令選項列表,及每個選項的說明。然而,通常手冊文件並不包含例項,它打算作為一本參考手冊,而不是教材。

下表描繪了手冊的佈局:
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

man這個分頁程式可以瀏覽一些命令所提供的文件,在大多數 Linux 系統中, man 使用 less 工具來顯示參考手冊,所以當瀏覽文件時,你所熟悉的 less 命令都能有效。

man program

“program” 是要瀏覽的命令名

eg:
1)要瀏覽li命令的手冊文件

[[email protected] ~]$ man ls

2)有時候,我們需要檢視參考手冊的特定章節,從而找到我們需要的資訊。如果我們要查詢一種檔案格式,而同時它也是一個命令名時, 這種情況尤其正確。沒有指定章節號,我們總得到第一個匹配項,可能在第一章節。我們這樣使用 man 命令,來指定章節號:

[[email protected] ~]$ man 5 passwd

9 apropos -顯示適當的命令

基於某個關鍵字的匹配項,可能搜尋參考手冊列表。
注意, man 命令加上“-k” 選項,和 apropos 完成一樣的功能

eg:
下面是一個以 “floppy” 為關鍵詞來搜尋參考手冊的例子:

[[email protected] ~]$ apropos floppy
create_floppy_devices (8) - udev callout to create all possible

輸出結果每行的第一個欄位是手冊頁的名字,第二個欄位展示章節。

10 whatis -顯示非常簡潔的命令說明

whatis 程式顯示匹配特定關鍵字的手冊頁的名字和一行命令說明:

在這裡插入圖片描述

11 info - 顯示程式 Info 條目

GNU 專案提供了一個命令程式手冊頁的替代物,稱為 “info”。
info 內容可通過 info 閱讀器程式讀取。
info 頁是超級連結形式的,和網頁很相似。

在這裡插入圖片描述

info 程式讀取 info 檔案, info 檔案是樹型結構,分化為各個結點,每一個包含一個題目。info 檔案包含超級連結,它可以讓你從一個結點跳到另一個結點。一個超級連結可通過它開頭的星號來辨別出來,把游標放在它上面並按下 enter 鍵,就可以啟用它。

用法:
輸入 “info”,接著輸入程式名稱,啟動 info。下表中的命令,當顯示一個 info 頁面時,用來控制閱讀器。
在這裡插入圖片描述

eg:

我們所討論的大多數命令列程式屬於 GNU 專案 “coreutils” 包

[[email protected] ~]$ info coreutils

將會顯示一個包含超級連結的手冊頁,這些超級連結指向包含在 coreutils 包中的各個程式

12 README 和其它程式文件

位置:
許多安裝在你係統中的軟體,都有自己的文件檔案,這些檔案位於/usr/share/doc 目錄下

各類說明檔案格式檢視方式:
1)以文字檔案的形式儲存的,用 less 閱讀器來瀏覽
2)HTML 格式,可用網頁瀏覽器來閱讀
3) “.gz” 結尾的檔案,表示 gzip 壓縮程式已經壓縮了這些程式。gzip 軟體包包括一個特殊的 less 版本,叫做 zlesszless 可以顯示由 gzip壓縮的文字檔案的內容。

13 用別名(alias)建立你自己的命令

命令列小技巧:可以把多個命令放在同一行上,命令之間用 “;” 分開。

command1; command2; command3…

命令結構:

alias name=‘string’

在命令 “alias” 之後,輸入“name”,緊接著(沒有空格)是一個等號,等號之後是一串用引號引起的字串,字串的內容要賦值給 name

eg:

[[email protected] ~]$ cd /usr; ls; cd -
bin games kerberos lib64 local share tmp

[[email protected] ~]$

說明:正如我們看到的,我們在一行上聯合了三個命令。首先更改目錄到/usr,然後列出目錄內容,最後回到原始目錄(用命令 “cd ∼”) , 結束在開始的地方。

把上面的一行命令,用1個命令怎麼表示?
現在,通過 alia 命令把這一串命令轉變為一個命令。

們要做的第一件事就是為我們的新命令構想一個名字。比方說“test”。在使用”test” 之前,查明是否 “test” 命令名已經存在系統中,是個很不錯的主意。為了查清此事,可以使用 type 命令:

[[email protected] ~]$ type test
test is a shell builtin

哦! “test” 名字已經被使用了。試一下”foo”:

[[email protected] ~]$ type foo
bash: type: foo: not found

太棒了! “foo” 還沒被佔用。建立命令別名:

[[email protected] ~]$ alias foo=‘cd /usr; ls; cd -’

我們定義了別名之後,這個命令別名可以使用在任何地方。

[[email protected] ~]$ foo
bin games kerberos lib64 local share tmp

[[email protected] ~]$

我們也可以使用 type 命令來檢視我們的別名:

[[email protected] ~]$ type foo
foo is aliased to `cd /usr; ls ; cd -’

刪除別名,使用 unalias 命令,像這樣:

[[email protected] ~]$ unalias foo
[[email protected] ~]$ type foo
bash: type: foo: not found

雖然我們有意避免使用已經存在的命令名來命名我們的別名,但這是常做的事情
通常,會把一個普遍用到的選項加到一個經常使用的命令後面。例如,之前見到的 ls 命令,會帶有色彩支援:

[[email protected] ~]$ type ls
ls is aliased to ‘ls --color=tty’

要檢視所有定義在系統環境中的別名,使用不帶引數的 alias 命令。下面在 Fedora 系統中預設定義的別名。試著弄明白,它們是做什麼的:

[[email protected] ~]$ alias
alias l.=‘ls -d .* --color=tty’

在命令列中定義別名有點兒小問題。當你的 shell 會話結束時,它們會消失。隨後的章節裡,我們會了解怎樣把自己的別名新增到檔案中去,每次我們登入系統,這些檔案會建立系統環境。