linux shell命令快捷獲得系統協助(一)[man-pages定義規範]_linux shell

來源:互聯網
上載者:User

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

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

一、程式內在協助資訊


例如:

[chengmo@centos5 ~]$ cat --helpUsage: cat [OPTION] [FILE]...Concatenate FILE(s), or standard input, to standard output.   -A, --show-all           equivalent to -vET#......省略 [chengmo@centos5 ~]$ man -hman, version 1.6d usage: man [-adfhktwW] [section] [-M path] [-P pager] [-S list]        [-m system] [-p string] name ...#......省略

上面是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 這個目錄裡面。這個目錄下面結構還有定義的:

[chengmo@centos5 man]$ lsbg  el  fr            hu            it.UTF-8  man1   man2x  man4   man6   man8   manl  pl.ISO8859-2  ro         sk  zh_CNcs  en  fr.ISO8859-1  id            ja        man1p  man3   man4x  man6x  man8x  mann  pl.UTF-8      ru         sl  zh_TWda  es  fr.UTF-8      it            ko        man1x  man3p  man5   man7   man9   nl    pt            ru.KOI8-R  svde  fi  hr            it.ISO8859-1  man0p     man2   man3x  man5x  man7x  man9x  pl    pt_BR         ru.UTF-8   tr#可以分為<strong>2類</strong>,一類是man[*]目錄,一類是:en,zh_CN,pl.ISO8859-2類代表語言已經地區,編碼目錄

先說一下,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 。看下下面例子:

[chengmo@centos5 man5]$ ls p*      pam.5.gz       pam_env.conf.5.gz  passwd.5.gz  png.5.gz  pam.conf.5.gz  pam_krb5.5.gz      pbm.5.gz     pnm.5.gz  pam.d.5.gz     pam_ldap.5.gz      pgm.5.gz     ppm.5.gz  #/usr/share/man/man5 下面所有以p開標頭檔,從檔案裡面我們就知道它對應於那些設定檔格式說明了。#pam.d.5.gz就是pam.d目錄結構說明  pam.5.gz是pam模組結構說明

從這個裡面看,.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地址

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

[chengmo@centos5 ~]$ gtbl cat.1  | gtbl | groff -Tascii -man     CAT(1)                           User Commands                          CAT(1) NAME       cat - concatenate files and print on the standard output SYNOPSIS       cat [OPTION] [FILE]... DESCRIPTION       Concatenate FILE(s), or standard input, to standard output.省略.... EXAMPLES       cat f - g省略....  AUTHOR       Written by Torbjorn Granlund and Richard M. Stallman. REPORTING BUGS       Report bugs to <bug-coreutils@gnu.org>. COPYRIGHT       Copyright (C) 2006 Free Software Foundation, Inc.省略....SEE ALSO       The full documentation for cat is maintained as a Texinfo  manual.   If省略.... cat 5.97                          March 2007                            CAT(1)

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.