Linux Shell 命令快捷獲得系統幫助

發表於2015-10-22

作為剛剛學習linux朋友,我們拿到一個命令,不知道怎麼樣使用,一般都會先看下命令預設引數說明,然後再不清楚就是通過man命令查閱手冊。還是找不到方法,就網上搜尋,最後不行就去大論壇發帖。由於很多時候發帖子估計要比較久有人回覆。久而久之,對學習linux的熱情被怠慢下來了。 其實,這也是學習linux的最大困難。

linux命令幫助,一般有2種,命令自身程式碼裡面帶有使用幫助說明,這種一般很精簡,太長了,程式自身的大小以及日常維護不方便。還有一種,就是帶有幫助檔案,類似windows的chm格式檔案。下面我說下這2種怎麼樣查閱。

一、程式內在幫助資訊

例如:

上面是2個例子,通過引數獲得命令使用幫助,這是我們經常用的。 說點題外話,開始跑題了……,呵呵

我想說下命令常見引數規律,一般如果帶引數是一個字元,那麼就用:一個”-“連線,如果後面引數是多個字元就用:”–“連線。是不是一個”-“後面不能接多個字元呢?這點就是linux命令解析靈活性了,如果你把多個字元用一個”-“連線,它會將它分割為多個引數。如:ls –al 等價於 ls –a –l ,如果你用:ls –-al 那麼它將把al作為整體引數了。

還要說一點,一般linux命令,都會用-h,或者 –help作為返回命令列幫助資訊。 特別是–help最多,有的命令2個都支援。 這個已經成了一種習慣了。遇到不會用的命令,不妨試試這2個引數。

二、獲得命令外部幫助檔案(man-pages)

  • 什麼是手冊頁(man-pages)

在windows下面,我們經常把幫助手冊叫電子書,是chm檔案。在linux下面的幫助手冊,一般叫man-pages。它們按照一定規律存放在linux一些資料夾裡面,如果需要查閱,可以通過man-pages手冊索引命令查閱,常見有:info,man(本文主要講的),xman等等。說到這裡,肯定有朋友會說:那有windows下面的chm方便嗎,搜尋,查詢,以及表現形式怎麼樣的呢?在shell終端檢視,是不是都是一大篇大篇文字,單獨枯燥,密密麻麻的。 哈哈,我可以說的是,它內容表現還很豐富,支援普通文字,表格,圖片,還有就是搜尋定位到需要資訊超快。 一定比在windows裡面通過滑鼠點選快幾倍了。

那麼它為什麼管理方便,索引速度快呢。接下來,我們看一下man-pages也的規範了。

  • man-pages目錄及檔名規範定義

存放目錄:

首先是目錄以及存放規範,linux文件經常放在:MANPATH環境變數指定的目錄中。一般在:/usr/share/man 這個目錄裡面。這個目錄下面結構還有定義的:

先說一下,man[*]這類目錄表示意思。linux幫助文件,一個特別的有意思的是,按照文件表示不同型別,分領域的(也就是分類別),過會我們會說這個類別按照什麼分了。還有就是類似:zh_CN pl.ISO8859-2這些。文件還分語言.地域.字元編碼 。可以支援統一命令,多個語言版本的文件,並且地域可以不一樣,還可以指定字符集。如:zh_TW.big5 這個意思就是:中文_臺灣地區.使用big5字符集編碼的文件。
文件領域區分方法(就是類別)

我們看下下面的表格:

領域 描述 說明
1 使用者命令 可由任何人啟動的,如env、cat、man、touch文件
2 系統呼叫或核心函式 即由核心提供的函式 如link、sethostname、mkdir
3 庫程式 即庫函式 如acosh、asctime、btree、locale
4 與裝置有關的資訊 即/dev目錄下的特殊檔案 如zero null sda
5 檔案格式描述 如/etc/passwd 檔案格式描述說明在這個分類下
6 遊戲 遊戲的幫助檔案
7 其他 包括 巨集命令包、慣例等如 arp、boot、regex、unix utf8
8 系統管理 只能由root啟動 如fdisk、fsck、renice、rpm、yum
9 核心 用來存放核心例行程式的文件
n 新文件 可能要移到更適合的領域
o 老文件 可能會在一段期限內保留
l 本地文件 與本特定系統有關的

如果文件屬於那個型別的,它就放到 MANPATH/語言_區域.字符集/man[n]目錄下面。 沒有區域語言,代表是en英文文件。就直接放到:MANPATH/man[n]下面,基本上大部分文件都是這個下面。

舉個列子吧:

linux下面有個命令是:passwd 修改密碼資訊的,每個使用者都可以呼叫,所以它會放到man1/目錄下面

但是同時,/etc/passwd有個儲存使用者賬戶資訊配置檔案,它的格式及說明資訊文件,將放到/man5目錄下了。這樣按照領域(以後都叫這個了,呵呵)區分,不會出現相同名稱檔案找錯的情況了。 上面提到的:1,2,3,4,5,7,8這些型別是我們經常用到的。 如果我想知道/dev/null 裝置的意思,我可以到:man4這個目錄下面找了。

幫助檔案格式:

剛才說了,目錄存放格式,幫助檔案一樣有它的格式的。首先是命名格式:

[命令名稱.領域]:名字就是命令、函式或檔名的名稱,後面跟一個點,再跟著領域字元。如:如果passwd命令說明文件,檔名命名是:passwd.1,加上目錄存放為:man1/passwd.1 ,如果對應passwd格式說明文件,它將是:man5/passwd.5 。看下下面例子:

從這個裡面看,.gz結尾,看來是通過gzip壓縮過的,linux系統為節省文件儲存空間,自帶文件都經過壓縮的。只是檢視時候,我們需要解壓然後檢視。文件內容不會改變。

再囉嗦一下:

細心朋友一定看到個問題,上面顯示:man目錄下面結構例子裡面,除了man[n]以及語言地區目錄。還有一類目錄:man1,man0p,man1p,man1x 這裡說明下:

加p:表示POSIX Programmer 程式說明文件

加x:表示x windows桌面程式說明文件

0p:表示POSIX Programmer 一些c的標頭檔案庫,如:tcp.h,ulimit.h等說明文件

 

  • man-pages檔案內容格式規範

能夠快捷方便查詢linux文件,除了目錄規範以及命名規範外。對於文件的內容也有一個格式規範呢。

一個文字檔案,又不是用word格式,基本都是ascii字元,還有什麼規範?

可能朋友會這麼說,是的,它確實是文字檔案,編輯一個隨便的txt檔案,就可以是一個linux文件,如:你寫了個:testhellow.sh指令碼,然後你寫了一段文字存為:man/man1/testhellow.1檔案。這個就算一個文件了。

你通過linux索引方法,是可以找得到的。 但是:它不是一個規範的文件。

規範格式文件是:

手冊頁內容

描 述

NAME 程式或者命令的名稱、手冊節號及釋出日期
SYNOPSIS 怎樣呼叫命令,帶有所有選項和引數的完整列表
DESCRIPTl0N 命令及其用法的簡短小結
RETURN VALUES 程式或者庫函式返回值,以及產生特定返回值的環境
EXIT STATUS 經常用來替代服TURNVALUS
OPTIONS 按字母順序排列的選項和引數清單,如果有的話
FILES 命令使用的或者能使用的檔案清單
USAGE 用程式的語言說明的簡明語法,如果有的話
ENVIROMENT 命令使用的或者能使用的環境變數清單
DIAGNOSTICS 命令產生的錯誤資訊及其解決辦法的清單
NOTES 不能夠歸入其他任何一種類別下的所有資訊
CONFORMING TO 列出程式遵循的任何標難,比如PoSIX或ISO
SEE ALSO 和命令有關的交叉索引和資訊
BUGS 指出己知的bug和錯誤功能,以及怎樣和程式的作者聯絡修正它們
AUTHOR 命令的作者或者維護者的名字,可能帶有電子郵件地址或URL地址

 

規範的文件,如果有相關描述,都會包含上面這些節點型別的。我們舉例說明下:

這裡自己解壓了一個cat.1.gz然後通過自帶命令檢視文件格式如上圖,這些你看到用到好多命令,顯示一個文件,在下一節文件查詢裡面我們會知道原因的。

這裡主要說的是linux文件結構,包括目錄,命名,已經文件名稱,格式等。這些不是強制的,系統也不好強制檢測你自己的文件是否滿足。但是,你如果有自己文件想加入系統索引,按照規定去做,才會讓以後管理不止混亂了。俗話說:無規律不成方圓。是這個理。呵呵,今天說的比較囉嗦,不知道有沒有說清楚,這次說的比較理論的,下一節實際檢索文件方面的東西。

相關文章