Man Page: 如何使用以及小貼士

這是什麼

Man Page ( Manual Page ) 是 Unix 系統標配的在線系統手冊, 主要用來查詢命令. 在使用包管理器安裝程序的時候基本總是可以看到 configurating man-db... 的輸出, 是程序將自己的手冊加入到系統手冊當中.

儘管 Man Page 聲稱是在線手冊 ( 其本身也支持在線查詢 ), 但是大多數手冊都以 troff 格式存儲在本地.

包含的章節

章節描述
1命令
2System calls (Linux 內核函數)
3庫函數. (收錄了部分 C 語言函數)
4特殊檔案 (比方說 /dev 下的文件) 和驅動
5檔案格式與協定 (e.g /etc/passwd )
6遊戲和屏保
7雜項
8管理員指令

在手冊的開頭和結尾都可以看到 名稱(數字) 形式的字串, 括弧中的數字就是說明這個條目隸屬的章節. 一個條目可以隸屬于多個章節, 比如 passwd 是一個命令的同時也是一個檔案, 所以它同時隸屬于第一和第五章.

“passwd” 的查詢結果

格式

Man Page 是按照確定的格式組織的. 一般來說, 以下章節基本固定出現.

NAME條目的名稱. 名稱之後會有一句話概括它是什麼
SYNOPSIS梗概, 包含了如何運行這個命令和這個命令接受的一些命令行參數.
對於庫函數來說, 包含了這個函數的頭文件和它接受的參數
DESCRIPTION對於命令或者函數功能的描述
EXAMPLES運行這個命令的一些樣例
SEE ALSO與之相關的命令和文件 (關聯條目)
Kill 命令的 Man 頁面

如何使用

鍵盤操作

因为 Man Page 是在使用 less 作为其默认的 Pager, (你也可以在 /etc/man.conf 中自行修改), 所以操作是沿用 less 系的操作. 随便打开一个条目按 h 可以看到操作手册.

命令行參數

敲入 man -h 可以看到命令行参数… 在这里贴出中文版的 man 命令参数. (只列出了常用的命令)

用法: man [-adfhktwW] [section] [-M 指定手册路径] [-P 查看器] name ...

  a : 列出所有符合查找条件的条目
  f : 等价于 whatis, 精准查找命令打出一句话介绍
  h : 打出本条帮助信息
  k : 和 apropos 一样, 模糊查找命令并打出介绍
  K : 在所有页面里查找一条字串
  w : 打出匹配到条目的文件位置.
      (如果只输出 man -w, 会打出 man 搜索数据的位置.)

  M 路径    : 指定 man page 数据库的路径
  P 查看器  : 指定用什么查看器查看 man page (less, more...)
  • whatisapropos 的功能差不多, 都是给出一句话解释输入的命令是什么. 只不过 whatis 精确查找输入, 要求匹配到的结果必须和输入一摸一样; apropos 模糊查找, 只要结果包括输入就可以. 比如说, whatis print 会提示找不到结果, apropos print 会输出包括 printf、pwd 在内的一堆结果, 因为 printf 包含 print, pwd 的介绍是 print name of current/working directory 也包含 print. ( 在 Mac 上好像自带的 whatis 和 apropos 没有区别, 我不知道是不是只是我的电脑这个样子 ).
  • man -aw [name] 是很常见的用法. 当要查询的条目在多个部分中存在的时候, 可以先执行 man -aw 看一下该条目存在于那几个部分, 然后分别查询.

小技巧

彩色 Man Page

黑白的 Man Page 可讀性確實不怎麼好. 如果你的命令行恰巧是在使用 oh-my-zsh 的話 (強推), 可以配合使用這個插件. 在你的 ~/.zshrc 文件中添加以下一行:

plugins=(... colored-man-pages)

如果你並沒有安裝 oh-my-zsh, 可以安裝 most 來達到類似的效果:

brew install most
# sudo apt-get install most

export PAGER="most"
man printf

配合使用 Linux Man Page

因為我的筆電是 Mac 系統, 雖然命令大多和 Linux 差不多, 還是有少數不同或者找不到的 (比如 open). 這個難道開一個虛擬機查詢嗎?
使用下面的命令可以在 mac 上使用 linux 的 manpage (僅限內核命令)

cd /tmp
wget https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/man-pages-5.12.tar.xz
tar -xf man-pages-5.12.tar.xz
mv man-pages-5.12 /usr/local/lib/linuxman
echo "alias linuxman='man -M /usr/local/lib/linuxman/" >> ~/.zshrc

因為 Linux Man Page 是有中譯版的, 所以你可以選擇使用中譯版, 但是我並不推薦. 一是有的翻譯非常蛋疼, 或者格式化得亂七八糟; 二是配置複雜, 而且和彩色 man page 並不兼容.

將手冊存儲為 PDF 格式

man -t printf | ps2pdf - > printf.pdf

C++ Man Page

前面有介紹過, Man Page 包含了一些 C 語言函數. 那麼有沒有類似的, 專門為 C++ 打造的 Man Page 呢? 還真的有: CPPMAN – 一個用 python 寫成的 C++ 語言手冊. 來源採用了 cppreference.comcplusplus.com 的在線手冊, 以 vim 作為 pager.

手冊截圖

要安裝 CPPMAN, 可以使用以下命令:

brew install cppman         # Mac 用戶
sudo apt-get install cppman # debian 系用戶
pip install cppman          # 有 python 環境的

另外, CPPMAN 還支持離線手冊, 使用以下命令可以將在線的內容離線到本地方便斷網查看.

cppman -c

參考

Thumbnail: Dev Manual by Tom Souverain
If using the image violates your rights, or there’s anything related to copyright laws, please contact me at [email protected], I will deal with them right away.

在〈Man Page: 如何使用以及小貼士〉中有 1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *