Linux的命令非常多,很多人在學(xué)一個命令時,首先想到的是使用百度或者谷歌,或者參考書上給出怎么使用的例子。但授人以魚不如授人以漁,通過man該命令可以得到關(guān)于該命令的有用信息。當(dāng)我們學(xué)會使用man文檔時,將大大提升使用命令的能力。這里,本人認(rèn)為更多人是不知道列出的選項怎么用,有什么規(guī)律,導(dǎo)致不想使用man。為此,本文通過對mkdir的命令文檔進行解釋,并給出使用示例,希望對讀者們有所幫助。
一、man命令
man將各類命令分為9個模塊:
| 模塊 | 含義 |
|---|---|
| 1 | 可執(zhí)行文件或者shell命令 |
| 2 | 系統(tǒng)調(diào)用(內(nèi)核提供的函數(shù)) |
| 3 | 庫函數(shù) |
| 4 | 特別的文件(通常在/dev) |
| 5 | 文件格式,如/etc/passwd |
| 6 | 游戲 |
| 7 | 雜項(包括宏包) |
| 8 | 系統(tǒng)管理員命令(通常給root用戶使用) |
| 9 | 內(nèi)核例程(非標(biāo)準(zhǔn)例程) |
那么,這部分和我們有什么關(guān)系呢?事實上,當(dāng)我們man一個命令的時候,默認(rèn)會從這些模塊中查找,但找到的可能不是我們想要的。例如
man mkdir
得到:
這里寫圖片描述
我們確實得到了mkdir命令的幫助文檔。但是如果我要查詢mkdir這個系統(tǒng)調(diào)用呢?這時就不是我想要的了。從上面表格,可以知道系統(tǒng)調(diào)用是在第二部分,這時就要用如下命令:
man 2 mkdir
這里寫圖片描述
這時看到的是MKDIR(2),表示是系統(tǒng)調(diào)用這個板塊的。要知道,man在沒有指定板塊時,將使用一種默認(rèn)的順序查找這些板塊中的命令,只返回含有該命令的第一個文檔。當(dāng)指定板塊時,只從該板塊中查找。所以,當(dāng)我們man得不到想要的文檔時,就要給出板塊號了。
下面,我們來對剩余的一些板塊的命令舉一個例子。
man 3 fread
這里寫圖片描述
man 4 tty
這里寫圖片描述
man 5 passwd
這里寫圖片描述
這時展示的是/etc/passwd的格式。
二、man mkdir
這里以man mkdir為例,解釋這個文檔里面的內(nèi)容。為了方便,這里對所有非空行添加了行號。
1 MKDIR(1) User Commands MKDIR(1)
2 NAME
3 mkdir - make directories
4 SYNOPSIS
5 mkdir [OPTION]... DIRECTORY...
6 DESCRIPTION
7 Create the DIRECTORY(ies), if they do not already exist.
8 Mandatory arguments to long options are mandatory for short options too.
9 -m, --mode=MODE
10 set file mode (as in chmod), not a=rwx - umask
11 -p, --parents
12 no error if existing, make parent directories as needed
13 -v, --verbose
14 print a message for each created directory
15 -Z set SELinux security context of each created directory to the default
16 type
17 --context[=CTX]
18 like -Z, or if CTX is specified then set the SELinux or SMACK security
19 context to CTX
20 --help display this help and exit
21 --version
22 output version information and exit
23 AUTHOR
24 Written by David MacKenzie.
25 REPORTING BUGS
26 GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
27 Report mkdir translation bugs to <http://translationproject.org/team/>
28 COPYRIGHT
29 Copyright ? 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL ver‐
30 sion 3 or later <http://gnu.org/licenses/gpl.html>.
31 This is free software: you are free to change and redistribute it. There is
32 NO WARRANTY, to the extent permitted by law.
33 SEE ALSO
34 mkdir(2)
35 Full documentation at: <http://www.gnu.org/software/coreutils/mkdir>
36 or available locally via: info '(coreutils) mkdir invocation'
37 GNU coreutils 8.23 November 2014 MKDIR(1)
2.1 man命令文檔的構(gòu)成
可以看出,文檔有幾個部分:
| 部分 | 解釋 |
|---|---|
| NAME | 命令的名字 |
| SYNOPSIS | 命令的格式 |
| DESCRIPTION | 語法,主要是一些選項 |
| AUTHOR | 命令的作者 |
| REPORTING BUGS | 報告bug的鏈接 |
| COPYRIGHT | 版權(quán) |
| SEE ALSO | 更多參考 |
一般情況下還可能有其他部分,如EXAMPLES,這個部分會給出命令的使用示例。首先,來看看第5行:
mkdir [OPTION]... DIRECTORY...
這一行定義了命令的使用格式。[]表示可選,也就是可以添加OPTION,也可以不用添加OPTION。而DIRECTORY不可以缺少,必須至少有一個。...表示可以有多個。如:
a. 無選項,一個DIRECTORY
mkdir mk1
b. 無選項,兩個DIRECTORY
mkdir mk2 mk3
c. 兩個選項,兩個DIRECTORY
mkdir -m 775 -p mk4/tmp mk5
結(jié)果:
這里寫圖片描述
2.2 參數(shù)的使用
接著看第8行:
Mandatory arguments to long options are mandatory for short options too.
這句話的意思是:對于長選項必不可少的參數(shù)對短選項來說也是必不可少的。
通常一個選項可以用-開頭,給出首個字母,這時是短選項。也可以用--開頭,給出全名,這時是長選項。如第9行:
-m, --mode=MODE
表示既可以用-m這個短選項,也可以用--mode這個長選項。
另外,后面有一個參數(shù)MODE,這個參數(shù)是指定被創(chuàng)建目錄的權(quán)限,而且這個參數(shù)是必不可少的,因為沒有加[]。這時的用法是-m MODE 或者--mode=MODE。但對于短選項來說,在-m MODE之間的空格一般可以去掉,即變成-mMODE。
這里寫圖片描述
不管哪種情況,MODE這個參數(shù)不能去掉。上面提示丟失了參數(shù),出錯。
2.3 使用剩余的選項
剩余的選項類似上面的情況,使用示例如下:
這里寫圖片描述
注:
本文來自Linux Man手冊的使用示例