我們知道Linux有很多的命令,那LInux要不要背命令?
答案是背最常用的那些就行了
那有的時候我們想查詢一些命令的詳細用法該怎么辦呢?
這里我給出3種方法
1.--help
--help的使用方法很簡單啊
要查詢的命令 --help
我們看個例子
這里我只截取了一小部分?
這里大概的講解了一些date命令的使用方法
????????基本上如果是命令,那么通過這個簡單的【--help】就可以很快速地取得你所需要的選項、參數的說明,這很重要。我們說過,在Linux下面你需要學習完成任務的方式,不用硬背命令參數。不過常用的命令你還是得要記憶一下,而選項就通過【--help】來快速查詢即可。
????????同樣的,通過【cal --help】你也可以取得相同的解釋,相當好用。不過,如果你使用【bc-help】的話,雖然也有簡單的解釋,但是就沒有類似scale的用法說明,同時也不會有+、-、
*、/、%等運算符的說明了。
????????因此,雖然【--help】已經相當好用,不過,通常【--help】用在協助你查詢“你曾經使用的命令所具備的選項與參數”而已,如果你要使用的是從來沒有用過得命令,或是你要查詢的根本就不是命令,而是文件的格式時,那就得要通過【man page】命令了。
2.man page
咦,【date -help】沒有告訴你STRING是什么?
????????嘿嘿,不要擔心,除了【--help】之外,我們Linux上面的其他在線求助系統已經都幫你想好要怎么辦了,所以你只要使用簡單的方法去尋找一下說明的內容,馬上就清清楚楚地知道該命令的用法了。這個man 是manual(操作說明)的簡寫。只要執行:【man date】馬上就會有清楚的說明出現在你面前,如下所示:
我們可以按空格往下翻,按q退出?
我們現在處于的這個界面就是man page
我們仔細來看這個man page就會發現一些有趣的東西
首先,在上個表格的第一行,你可以看到的是:【DATE(1)】,DATE我們知道是命令的名稱,那么(1)代表什么?
????????它代表的是“一般用戶可使用的命令”的意思。咦,還有這個用意,呵呵,沒銷在查詢數據的后面的數字是有意義的,它可以幫助我們了解或是直接查詢相關的數據。常見的幾個數字的意義是這樣的:
代號 | 代表內容 |
1 | 用戶在shell環境中可以操作的命令或可執行文件 |
2 | 系統內核可調用的函數和工具 |
3 | 一些常用函數和函數庫,大部分為c的函數庫 |
4 | 設備文件的說明,通常在/dev下的文件 |
5 | 配置文件或者是某些文件的格式 |
6 | 游戲 |
7 | 慣例和協議,比如LInux文件系統,網絡協議,ASCII代碼等說明 |
8 | 系統管理員可用的管理命令 |
9 | 跟內核有關的文件 |
?上述的表格內容可以使用【man man】來更詳細地取得說明。
????????通過這張表格的說明,未來你如果使用man page 在查看某些數據時,就會知道該命令/文件所代表的基本意義是什么了。舉例來說,如果你執行了 【 man nul】時,會出現的第一行是:【NULL(4)】,對照一下上面的數字意義,嘿嘿,原來 null?這個玩意兒竟然是一個設備文件,很容易了解了吧!
? 上表中的1、5、8這三個號碼特別重要,也請讀者要將這三個數字所代表的意義背下來。
????????再來,manpage的內容也分成好幾個部分來加以介紹該命令。就是上面【man date】那個表格內,以NAME作為開始介紹,最后還有個SEEALSO來作為結束。
基本上man page大致分成下面這幾個部分:
代號 | 內容說明 |
NAME | 簡短的命令、數據名稱說明 |
SYNOPSIS | 簡短的命令語法(syntax)簡介 |
DESCRIPTION | 較為完整的說明,這部分最好仔細看看 |
OPTIONS | 針對SYNOPSIS 部分中,有列舉的所有可用的選項說明 |
COMMANDS | 當這個程序(軟件)在執行的時候,可以在此程序(軟件)中執行的命令 |
FILES | 這個程序或數據所使用或參考或鏈接到的某些文件 |
SEE ALSO | 可以參考跟這個命令或數據有相關的其他說明 |
EXAMPLE | 一些可以參考的范例 |
?大概是這些,可能還有別的,我就不說了
2.1.man page常用按鍵
大致上了解了man page的內容后,那么在man page當中我還可以利用哪些按鍵來幫忙查看呢?首先,如果要向下翻頁的話,可以按下鍵盤的空格鍵,也可以使用[Page Up]與[Page Down]來翻頁。
????????同時,如果你知道某些關鍵詞的話,那么可以在任何時候輸入【/word】,來主動查找關鍵詞。例如在上面的查找當中,我輸入了【/date】會變成怎樣?
看到了嗎,當你按下【/】之后,光標就會移動到屏幕的最下面一行,并等待你輸入查找的字符串了。此時,輸入date 后,man page 就會開始查找跟date 有關的字符串,并且移動到該區域。
很方便吧!最后,如果要離開 man page 時,直接按下 【q】就能夠離開。我們將一些在man page 常用的按鍵給它整理整理:
按鍵 | 進行工作 |
空格 | 向下翻一頁 |
【Page Down】 | 向下翻一頁 |
【Page Up】 | 向上翻一頁 |
【Home】 | 去到第一頁 |
【End】 | 去到最后一頁 |
/string | 向【下】查找string 這個字符串,如果要查找vbird 的話,就輸入/vbird |
?string | 向【上】查找string 這個字符串 |
n,N | 利用 /或?來查找字符串時,可以用n來繼續下一個查找(不論是/或?),可以利用N來進行【反向】查找。 ????????舉例來說,我以/vbird 查找 vbird字符串,那么可以按下n繼續往下查詢,用N往上查詢。若以?vbird向上查詢vbird字符串,那我可以用n繼續【向上】查詢,用N反向查詢 |
q | 結束這次的man page |
要注意,上面的按鍵是在man page的界面當中才能使用的。
????????比較有趣的是那個查找,我們可以往下或是往上查找某個字符串,例如要在 man page 內查找vbird 這個字符串,可以輸入/vbird或是?vbird,只不過一個是往下,而一個是往上來查找的。而要重復查找某個字符串時,可以使用n或是N來操作即可,很方便吧!
????????既然有man page,自然就是因為有一些文件數據,所以才能夠讓man page讀出來。那么這學man page的數據存放在哪里呢?
????????不同的發行版通常可能有點差異性,不過,通常是放存/usr/share/man這個目錄里,然而,我們可以通過修改它的man page查找路徑來改善這個目錄的問題,修改/etc/man_db.conf(有的版本為man.conf 或 manpath.conf 或 man.config 等)即可。
2.2.查找特定命令/文件的man page說明文件
????????在某些情況下,你可能知道要使用某些特定的命令或是修改某些特定的配置文件,但是偏偏忘記了該命令的完整名稱,有些時候則是你只記得該命令的部分關鍵詞。這個時候你要如何查出來你所想要知道的man page?
我們以下面的幾個例子來說明man這個命令的作用。
你可否查出來,系統中還有哪些跟【man】這個命令有關的說明文件?
答:你可以使用下面的命令來查詢一下:
使用一f這個選項就可以取得更多與man相關的信息,而上面這個結果當中也有提示(數字)的內容,舉例來說,第三行的【man(7)】表示有個man(7)的說明文件存在,但是也有個man(1)存在。
那當我們執行【man man】的時候,到底是指向哪一個說明文件?
其實,你可以指定不同的文件,舉例來說,上表當中的兩個man你可以這樣將它的文件顯示出來:
[dmtsai@study ~]$ man 1 man //這里是用man(1)的文件說明。
[dmtsai@study~]$ man 7 man //這里是用man(7)的文件說明
????????你可以自行將上面兩個命令輸入一次看看就知道,兩個命令輸出的結果是不同的。那個1、7就是分別取出在manpage里面關于1與7相關數據的文件。
????????好了,那么萬一我真的忘記了執行數字,只有輸入【man man】時,那么取出的數據到底是1還是7?這個就跟查找的順序有關了。
????????查找的順序是記錄在/etc/man_db.conf這個配置文件當中,先查找到的哪個說明文件,就會先被顯示出來。一般來說通常會先找到數字較小的那個,因為排序的關系,所以,man man會跟man 1 man結果相同。
????????除此之外,我們還可以利用關鍵詞找到更多的說明文件數據。什么是關鍵詞?從上面的【man -f man】輸出的結果中,我們知道其實輸出的數據是:
- 左邊部分:命令(或文件)以及該命令所代表的意義(就是那個數字);
- 右邊部分:這個命令的簡易說明,例如上述的【一macros to format man pages 】;
當使用【man -f 命令】時,man只會找數據中的左邊那個命令(或文件)的完整名稱,有一點不同都不行。但如果我想要找的是關鍵詞呢?
????????也就是說,我想要同時找上面說的兩個地方的內容,只要該內容有關鍵詞存在,不需要完全相同的命令(或文件)就能夠找到時,該怎么辦?請看下個范例。
例題
找出系統的說明文件中,只要有man這個關鍵詞就將該說明列出來。
?非常多啊!
因為這個是利用關鍵詞將說明文件里面只要含有man那個字眼的(不見得是完整字符串) 就將它取出來,很方便吧!(上面的結果有特殊字體的顯示是為了方便讀者查看,實際的輸出結果并不會有特別的顏色顯示。)
事實上,還有兩個命令與man page有關,而這兩個命令是man的簡略寫法,就是這兩個:
[dmtsai@study ~]$ whatis [命令或是文件] //<==相當于man -f[命令或是文件] [dmtsai@study ~]$ apropos [命令或是文件] //<==相當于man -k[命令或是文件]
而要注意的是,這兩個特殊命令要能使用,必須要有建立whatis數據庫才行,這個數據庫的建立
需要以root的身份執行如下的命令.[root@study -]4 mandb #舊版的Linux這個命令是使用makewhatis,這一版開使用mandb了
3. info page
????????在所有的UNIX-like系統當中,都可以利用man 來查詢命令或是相關文件。但是,在Linux里
面則又額外提供了一種在線求助的方法,那就是利用info這個好用的工具。
????????基本上,info與man的用途其實差不多,都是用來查詢命令的用法或是文件的格式。但是與man page —口氣輸出一堆信息不同的是,info page 則是將文件數據拆成一個一個的段落,每個段落用自己的頁面來編寫,并且在各個頁面中還有類似網頁的超鏈接來跳到各不同的頁面中,每個獨立的頁面也被稱為一個節點(node)。所以,你可以將info page想成是命令行模式的網頁顯示數據。
????????不過你要查詢的目標數據的說明文件必須要以 info的格式來寫成才能夠使用info的特殊功能(例如超鏈接),而這個支持 info 命令的文件默認是放置在/usr/share/info/這個目錄當中。
????????舉例來說,info這個命令的說明文件有寫成info格式,所以,你使用【info info】可以得到如下的畫面:
我們看到Menu了吧,它下面那些全是超鏈接,指向那些超鏈接我們就可以跳轉到對應頁面,我們來試試看
我們可以直接按Tab鍵來到第一個超鏈接(自己移動光標來到這里也可以)
?
這個時候按下Enter
?
怎么樣?是不是很方便
更重要的是我們可以通過按N,P,U去到下一個,上一個,上一層的結點,非常方便
?鏈接之間還可以具有類似超鏈接的快速按鈕,可以通過【Tab】鍵在各個超鏈接間移動,也可以使用U、P、N來在各個層級與相關鏈接中顯示,非常不錯。至于在info page當中可以使用的按鍵,可以看下面的表格,事實上,你也可以在info page中按下h。
按鍵 | |
空格鍵 | 向下翻一頁 |
[Page Down] | 向下翻一頁 |
[Page Up] | 向上翻一頁 |
[Tab] | 在節點之間移動,有節點的地方,通常會以*顯示 |
[Enter] | 當光標在節點上面時,按下Enter可以進入該節點 |
b | 移動光標到該info界面當中的第一處 |
e | 移動光標到該 info界面當中的最后一個節點處 |
n | 前往下一個節點處 |
p | 前往上一個節點處 |
u | 向上移動一層 |
s(/) | 在info page當中進行查找 |
h,? | 顯示幫助選項 |
q | 結束這次的info page |
info page 是只有Linux上面才有的產物,而且易讀性增強很多,不過查詢的命令說明要具有info page功能的話,得用info page 的格式來寫成在線求助文件才行。
CentOS7將 info page的文件放置到/usr/share/info/目錄中,至于以非info page 格式寫成的說明文件(就是man page),雖然也能夠使用info 來顯示,不過其結果就會跟man相同。
舉例來說,你可以執行【info man】就知道結果了。
?