1. 程式人生 > >linux實驗樓學習筆記6

linux實驗樓學習筆記6

Linux下的幫助命令

一、內建命令與外部命令

什麼是內建命令,什麼是外部命令呢?這和幫助命令又有什麼關係呢?

因為有一些檢視幫助的工具在內建命令與外建命令上是有區別對待的。

內建命令實際上是 shell 程式的一部分,其中包含的是一些比較簡單的 Linux 系統命令,這些命令是寫在bash原始碼的builtins裡面的,並由 shell 程式識別並在 shell 程式內部完成執行,通常在 Linux 系統載入執行時 shell 就被載入並駐留在系統記憶體中。而且解析內部命令 shell 不需要建立子程序,因此其執行速度比外部命令快。比如:history、cd、exit 等等。

外部命令

是 Linux 系統中的實用程式部分,因為實用程式的功能通常都比較強大,所以其包含的程式量也會很大,在系統載入時並不隨系統一起被載入到記憶體中,而是在需要時才將其呼叫記憶體。雖然其不包含在 shell 中,但是其命令執行過程是由 shell 程式控制的。外部命令是在 Bash 之外額外安裝的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。

簡單來說就是一個是天生自帶的天賦技能,一個是後天得來附加技能。我們可以使用 type 命令來區分命令是內建的還是外部的。例如這兩個得出的結果是不同的

type exit

type service

得到的是兩種結果,若是對ls你還能得到第三種結果

實驗樓

#得到這樣的結果說明是內建命令,正如上文所說內建命令都是在 bash 原始碼中的 builtins 的.def中
xxx is a shell builtin
#得到這樣的結果說明是外部命令,正如上文所說,外部命令在/usr/bin or /usr/sbin等等中
xxx is /usr/sbin/xxx
#若是得到alias的結果,說明該指令為命令別名所設定的名稱;
xxx is an alias for xx --xxx

二、幫助命令的使用

1. help 命令

本實驗環境是 zsh,而 zsh 中內建並沒有 help 命令,我們可以進入 bash 中,在 bash 中內建有該命令

bash

實驗樓

做好了以上的準備,我們就可以愉快的使用 help 命令了,我們可以嘗試下這個命令:

help ls

得到的結果如圖所示,為什麼是這樣的結果?

實驗樓

因為 help 命令是用於顯示 shell 內建命令的簡要幫助資訊。幫助資訊中顯示有該命令的簡要說明以及一些引數的使用以及說明,一定記住 help 命令只能用於顯示內建命令的幫助資訊,不然就會得到你剛剛得到的結果。如圖中 exit,cd 便是內建命令

那如果是外部命令怎麼辦,不能就這麼拋棄它呀。其實外部命令的話基本上都有一個引數--help,這樣就可以得到相應的的幫助,看到你想要的東西了。試試下面這個命令是不是能看到你想要的東西了。

ls --help

實驗樓

2. man 命令

你可以嘗試下這個命令

man ls

實驗樓

得到的內容比用 help 更多更詳細,而且 man 沒有內建與外部命令的區分,因為 man 工具是顯示系統手冊頁中的內容,也就是一本電子版的字典,這些內容大多數都是對命令的解釋資訊,還有一些相關的描述。通過檢視系統文件中的 man 也可以得到程式的更多相關資訊和 Linux 的更多特性。

是不是好用許多,當然也不代表 help 就沒有存在的必要,當你非常緊急只是忘記該用哪個引數的時候,help 這種顯示簡單扼要的資訊就特別使用,若是不太緊急的時候就可以用 man 這種詳細描述的查詢方式

在嘗試上面這個命令是我們會發現最左上角顯示“ LS (1)”,在這裡,“ LS ”表示手冊名稱,而“(1)”表示該手冊位於第一章節。這個章節又是什麼?在 man 手冊中一共有這麼幾個章節

章節數 說明
1 Standard commands (標準命令)
2 System calls (系統呼叫)
3 Library functions (庫函式)
4 Special devices (裝置說明)
5 File formats (檔案格式)
6 Games and toys (遊戲和娛樂)
7 Miscellaneous (雜項)
8 Administrative Commands (管理員命令)
9 其他(Linux特定的), 用來存放核心例行程式的文件。

開啟手冊之後我們可以通過 pgup 與 pgdn 或者上下鍵來上下翻看,可以按 q 退出當前頁面

3. info 命令

要是你覺得man顯示的資訊都還不夠,滿足不了你的需求,那試試這個命令

#該命令在本環境中沒有,一般的 bash 會自帶的有。
info ls

Info_for_ls

得到的資訊是不是比 man 還要多了,info 來自自由軟體基金會的 GNU 專案,是 GNU 的超文字幫助系統,能夠更完整的顯示出 GNU 資訊。所以得到的資訊當然更多

man 和 info 就像兩個集合,它們有一個交集部分,但與 man 相比,info 工具可顯示更完整的 GNU 工具資訊。若 man 頁包含的某個工具的概要資訊在 info 中也有介紹,那麼 man 頁中會有“請參考 info 頁更詳細內容”的字樣。

三、實驗總結

本節我們講解了內建與外部命令的差別,以及相關的幫助命令的使用。這樣通過官方的文件幫助我們最快最有效率的解決當前所遇到的窘境。靈活的使用三個幫助命令,能夠很大的提高我們的工作效率

資料來源:https://www.shiyanlou.com/courses/1/labs/1917/document