轉載自http://itzone.hk/article/article.php?aid=200407152225014657

(如有侵權,請留言或來信告知)

前言

Man page是每位程式設計員及Unix/Linux系統管理員日常必備的參考,它必須是可靠以及準確(reliable & accurate)的,當然man page的擺放位置亦是關鍵,起碼你的man page是能夠被其他人存取的。

你需要知道man page的整個運作原理、存放規定以及編寫man page時要注意的表意問題,以達到更高的可靠度及準確度。

Man Page種類

Man page可分為九類:

  1. 使用者命令(User command)
  2. 系統程式(System call)
  3. 程式庫程序(Library function)
  4. 設備檔案(Device file)
  5. 檔案用途描述
  6. 遊戲說明
  7. 雜項(Miscellaneous)
  8. 系統管理工具(只有root才能使用)
  9. Linux核心程序

Linux根據以上的分類,製作了九類man page,Linux程式開發者也根據以上的分類,編寫描述軟件的man page,以上每一個分類我們叫做一個section,例如「man」這個指令屬第一類,即section 1,以man(1)表示;「malloc」為程式庫程序,因此它屬於第三類,以malloc(3)表示。

Man page命名及存放目錄

而man page的source file也有其命名方法,它的名稱必須為「cmd_name.section_no」,例如「malloc」指令,它的檔案名必須為「malloc.3」。另外,有些man page檔案名稱的最尾會加上「C」、「tk」或「X」之類,那代表該指令/程序/檔案分別是屬於C語言、tk語言及X程式專屬的參考。這樣命名的目的,始終在於避免發生同名指令的衝突,當您命名您的指令/程序時,最好先確保沒有和系統文件以及現有指令的名稱有所衝突。

所有man page的預設存放位址為/usr/man,而為了分類需要,在/usr/man裡都會有/usr/man/man1、/usr/man/man2等等,作為軟件開發者,您必須跟從man1、man2至man8的分類方法,但您仍可保留是否在/usr/man裡擺放man page的權利,大部分軟件都讓使用者輸入MANDIR,作為安裝man page的目錄,當然MANDIR之下是依照man1至man8的分類方法。詳情請參看http://www.pathname.com/fhs/

Man page內容分類

以下引述了http://www.tldp.org/HOWTO/Man-Page/q3.html的例子:

FOO(1)                     User Manuals                    FOO(1)

NAME
    foo - frobnicate the bar library

SYNOPSIS
    foo [-bar] [-c config-file ] file ...

DESCRIPTION
     foo  frobnicates the bar library by tweaking internal symbol
     tables. By default it parses all baz segments and rearranges
     them  in  reverse  order  by time for the xyzzy(1) linker to
     find them. The symdef entry is then compressed using the WBG
     (Whiz-Bang-Gizmo) algorithm.  All files are processed in the
     order specified.

OPTIONS
     -b   Do not write `busy' to stdout while processing.

-c config-file
          Use the alternate system wide  config-file  instead  of
          /etc/foo.conf.   This overrides any FOOCONF environment
          variable.

-a   In addition to the baz segments, also parse the  blurfl
          headers.

-r   Recursive  mode.  Operates  as fast as lightning at the
          expense of a megabyte of virtual memory.

FILES
     /etc/foo.conf
          The system wide configuration file. See foo(5) for fur-
          ther details.
     ~/.foorc
          Per  user  configuration  file.  See foo(5) for further
          details.

ENVIRONMENT
     FOOCONF
          If non-null the full pathname for an  alternate  system
          wide foo.conf.  Overridden by the -c option.

DIAGNOSTICS
     The following diagnostics may be issued on stderr:

Bad magic number.
          The input file does not look like an archive file.
     Old style baz segments.
          foo  can  only  handle  new  style  baz segments. COBOL
          object libraries are not supported in this version.

BUGS
     The command name should have been chosen more  carefully  to
     reflect its purpose.

AUTHOR
     Jens Schweikhardt <howto at schweikhardt dot net>

SEE ALSO
     bar(1), foo(5), xyzzy(1)

Linux                Last change: MARCH 1995                    2

    • NAME

      這是man page必須包含的部分,你必須以該指令/程序名稱作開頭,若您的man page如fscanf一般是一系列的指令,您可以使用「,」號分開,然後加入「-」(dash)號,最後填上指令/程序的簡短描述。

    • SYNOPSIS

      您可以在這部分裡填上指令所需要的header file、函數原型(prototype)及傳回類型。

    • DESCRIPTION

      你需要在這部分寫上你的程式是做甚麼,講解各個參數的用途,以及運作原理及算法等等。

    • OPTIONS

      顯示如何加入不同的選項能如何更改你程式的執行效果。

    • FILES

      列出執行時所需的檔案及程式。

    • ENVIRONMENT

      顯示不同的環境變數值能如何影響著您的程式。

    • DIAGNOSTICS

      講解程式在執行時會遇上的錯誤。

    • BUGS

      列出您的程式有甚麼問題……

    • AUTHOR

      作者的名稱及電郵地址。

    • SEE ALSO

      列出相關的man page。

man page分類與說明的更多相关文章

  1. 什麼是 N-key 與按鍵衝突?原理說明、改善技術、選購注意完全解析

    不管是文書處理或遊戲中,我們都經常會使用到組合鍵,也就是多顆按鍵一起按下,執行某些特定的功能.有時候你可能會發現,明明只按下2顆鍵,再按下第3顆鍵時訊號卻沒有輸出.要是打報告到一半遇到這種狀況還好,如 ...

  2. JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (2):JavaFX建立及程式碼說明 (转帖)

    說明:就如同標題一樣,前端會用到JavaFX.Swing.Java Web Start.Google Map 的技術, 後端就是JDBC.Servlet的技術,以及我們會簽署認證jar檔案,這樣才可存 ...

  3. NUC970 U-Boot 使用說明

    U-Boot 使用說明U-Boot 是一個主要用於嵌入式系統的開機載入程式, 可以支援多種不同的計算機系統結構, 包括ARM.MIPS.x86與 68K. 這也是一套在GNU通用公共許可證之下發布的自 ...

  4. [DE2i-150] 重建PCIe_Fundmental範例說明

    以下資料的整理主要是做備忘錄,避免以後忘了,順便留給需要的人. ========================================== 本文主要是參考友晶科技的DE2i-150光碟裡面的 ...

  5. vi 常用命令使用說明

    vi是一種文字模式全螢幕文字編輯軟體(Text Editor).對初學者來說,vi是個很難用的工具,一般需要2個星期的時間才能得心應手.之所以介紹vi,其理由如下: vi是Unix上的標準文字編輯軟體 ...

  6. 【转】UniGUI Session管理說明

    [转]UniGUI Session管理說明 (2015-12-29 15:41:15) 转载▼   分类: uniGUI 台中cmj朋友在uniGUI中文社区QQ群里发布的,转贴至此. UniGUI ...

  7. GlusterFS六大卷模式說明

    GlusterFS六大卷說明   第一,分佈卷 在分布式卷文件被随机地分布在整个砖的体积.使用分布式卷,你需要扩展存储,冗余是重要或提供其他硬件/软件层.(簡介:分布式卷,文件通过hash算法随机的分 ...

  8. 【转载】GlusterFS六大卷模式說明

    本文转载自翱翔的水滴<GlusterFS六大卷模式說明> GlusterFS六大卷說明 第一,分佈卷 在分布式卷文件被随机地分布在整个砖的体积.使用分布式卷,你需要扩展存储,冗余是重要或提 ...

  9. open和opener使用說明

    父網頁:window.open("article.html")子網頁:var dialoginfo=$('#dialogdata',window.opener.document); ...

随机推荐

  1. Oracle【IT实验室】数据库备份与恢复之三:OS备份/用户管理的备份与恢复

    用户管理的备份与恢复也称 OS物理备份,是指通过数据库命令设置数据库为备份 状态,然后用操作系统命令,拷贝需要备份或恢复的文件.这种备份与恢复需要用户的 参与手工或自动完成. 对于使用 OS拷贝备份的 ...

  2. html5 svg 圆形进度条

    html5 svg 圆形进度条 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  3. csipsimple,linphone,webrtc比较

    转自: http://www.lxway.com/566299526.htm 最新要做一个移动端视频通话软件,大致看了下现有的开源软件 一) sipdroid1)架构sip协议栈使用JAVA实现,音频 ...

  4. Activity生命周期 onCreate onResume onStop onPause (转)

    Android应用开发提高系列(6)——Activity生命周期 onCreate 和 onResume 在程序启动时候都会启动, 所有有些需要在onCreate onResume中都要实现的功能,之 ...

  5. ML 07、机器学习中的距离度量

    机器学习算法 原理.实现与实践 —— 距离的度量 声明:本篇文章内容大部分转载于July于CSDN的文章:从K近邻算法.距离度量谈到KD树.SIFT+BBF算法,对内容格式与公式进行了重新整理.同时, ...

  6. POJ 1947 Rebuilding Roads 树形DP

    Rebuilding Roads   Description The cows have reconstructed Farmer John's farm, with its N barns (1 & ...

  7. TCP状态转换图详解

    以下对几个关键的中间状态进行说明: 三次握手: LISTEN:表示服务器的某个SOCKET处于监听状态,可以进行连接了. SYN_SENT:表示客户端的某个SOCKET与服务器进行connect时,首 ...

  8. Process32First 返回FALSE的原因

    一般情况下是不会返回FALSE的,如果发生了,请检查: 1:系统为UNICODE的,一定要设置PROCESSENTRY32的dwSize为sizeof(PROCESSENTRY32)即可..

  9. Iterator

    hasNext() 方法是检查序列中是否还有元素. remove()方法是将迭代器返回的元素删除. List list = new ArrayList(); list .add(“a”); for(I ...

  10. Linux学习笔记(22) Linux启动管理

    1. 系统运行级别 运行级别 含义 关机 1 单用户模式,可想象为windows的安全模式,主要用于系统修复 2 不完全的命令行模式,不含NFS服务 完全的命令行模式,就是标准字符界面 4 系统保留 ...