linux最重要的命令,沒有之一,你掌握了嗎?

背景

請自問自答:

  • 你覺得linux中最重要的命令是哪個?
  • 你是否已經(jīng)掌握了它?
  • 你認為它最重要的理由是什么?

正所謂“自助者天助之”,在linux系統(tǒng)中,最重要的命令應(yīng)當是能夠讓你“自助”的命令。

這個命令就是man——用來查看linux的文檔系統(tǒng)。它之所以是最重要的命令,是因為通過它你能學(xué)習(xí)到其它任何命令,這無疑是為你打開了一扇信息大門。

簡介

Unix系統(tǒng)中有兩個重要的文檔系統(tǒng):

  • Unix聯(lián)機手冊:Unix系統(tǒng)默認提供的文檔系統(tǒng);
  • Info系統(tǒng):GNU項目的官方文檔系統(tǒng);

自學(xué)的傳統(tǒng)

在unix的傳統(tǒng)中,自學(xué)是一個極其重要的傳統(tǒng),在之前的文章Unix文化--RTFM提到過。

生而知之者上也;學(xué)而知之者次也;困而學(xué)之又其次也;困而不學(xué),民斯為下矣。

別指望什么“生而知之”,能做到“學(xué)而知之”就相當不錯了。RTFM一般發(fā)生在遇到困難時,更像是“困而學(xué)之”,但它強調(diào)的是一種主觀能動性,因此是“學(xué)而知之”的層次。

unix手冊

Unix手冊也通常稱為“聯(lián)機手冊”、“手冊”,相當于我們平常所說的“官方幫助文檔”。

如何使用

unix手冊的查看方式非常簡單,使用man命令,意思是manual(手冊、指南),后接你要查看的命令的名稱,即:

man X(注意不是X man)。

比如,想要查看ls的用法,使用:

man ls

也可以后接多個命令,這樣將會逐個顯示后接命令的幫助手冊內(nèi)容,如:

man pwd ls cd

說明書頁

一個命令的幫助文檔是一個單獨的條目,如命令man ls的顯示內(nèi)容,稱為“一頁”,也叫做“說明書頁”。

如果說明書頁的內(nèi)容大于一屏,將分屏顯示(事實上幫助文檔不超過一屏的命令并不多)。

分屏的命令有lessmorepg,其中less最好用,使用最廣泛,也是man命令顯示說明書頁的默認分屏工具。

若希望用指定的分屏工具顯示幫助信息,使用管道線連接命令:

man ls | less
man cp | more
man pwd | pg

在查看幫助文檔內(nèi)容時,還可以使用一些命令來輔助閱讀,比如對于默認的分屏工具less來說,按<space>(空格)鍵會顯示下一屏內(nèi)容,按q鍵會退出,等等。

然而,無論使用什么分屏工具,最重要的命令是h,它顯示幫助信息。你看,再一次突出幫助命令的重要性

當按h鍵后,屏幕上將顯示該分頁工具的所有命令的摘要信息,想結(jié)束閱讀時,按q退出,再回到說明書頁中:

  • lessh命令摘要
                   SUMMARY OF LESS COMMANDS
      Commands marked with * may be preceded by a number, N.
      Notes in parentheses indicate the behavior if N is given.
      A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.

  h  H                 Display this help.
  q  :q  Q  :Q  ZZ     Exit.
  
                             MOVING
  e  ^E  j  ^N  CR  *  Forward  one line   (or N lines).
  y  ^Y  k  ^K  ^P  *  Backward one line   (or N lines).
  ...省略...

                          SEARCHING
  /pattern          *  Search forward for (N-th) matching line.
  ?pattern          *  Search backward for (N-th) matching line.
  ...省略...
  
                             JUMPING
  g  <  ESC-<       *  Go to first line in file (or line N).
  G  >  ESC->       *  Go to last line in file (or line N).
  ...省略...
  
                          CHANGING FILES
  :e [file]            Examine a new file.
  ...省略...
  
                    MISCELLANEOUS COMMANDS
  -<flag>              Toggle a command line option [see OPTIONS below].
  ...省略...
  
                           OPTIONS

        Most options may be changed either on the command line,
        or from within less by using the - or -- command.
        Options may be given in one of two forms: either a single
        character preceded by a -, or a name preceded by --.
  ...省略...
                          LINE EDITING

        These keys can be used to edit text being entered 
        on the "command line" at the bottom of the screen.

 RightArrow                       ESC-l     Move cursor right one character.
  ...省略...

  • moreh命令摘要

多數(shù)命令可在前面加整數(shù)參數(shù) k。方括號中為參數(shù)的默認值
星號(*)表示參數(shù)將成為新的默認值。
 
<空格鍵>                顯示下 k 行文本[當前屏幕尺寸]
z                       顯示下 k 行文本[當前屏幕尺寸]*
<回車鍵>                顯示下 k 行文本[1]*
d 或 ctrl-D             滾動 k 行[當前滾動尺寸,初始值為 11]*
q 或 Q 或 <interrupt>   退出 more
s                       跳過下面 k 行文本[1]
f                       跳過下面 k 屏文本[1]
b 或 ctrl-B             跳過上面 k 屏文本 [1]
'                       轉(zhuǎn)到上次搜索開始處
=                       顯示當前行號
/<正則表達式>           搜索正則表達式第 k 次出現(xiàn)處[1]
n                       搜索前一正則表達式第 k 次出現(xiàn)處[1]
!<cmd> 或 :!<cmd>       在子 shell 中執(zhí)行 <cmd> 命令
v                       在當前行啟動 /usr/bin/vi
ctrl-L                  重繪屏幕
:n                      轉(zhuǎn)到后面第 k 個文件[1]
:p                      轉(zhuǎn)到前面第 k 個文件 [1]
:f                      顯示當前文件名和行號
.                       重復(fù)前一命令

  • pgh命令摘要
pg 1.44 2/8/02. Copyright (c) 2000-2001 Gunnar Ritter. All rights reserved.       

  h                       this screen
  q or Q                  quit program
  <newline>               next page
  f                       skip a page forward
  d or ^D                 next halfpage
  l                       next line
  $                       last page
  /regex/                 search forward for regex
  ?regex? or ^regex^      search backward for regex
  . or ^L                 redraw screen
  w or z                  set page size and go to next page
  s filename              save current file to filename
  !command                shell escape
  p                       go to previous file
  n                       go to next file

Many commands accept preceding numbers, for example:
+1<newline> (next page); -1<newline> (previous page); 1<newline> (first page).

See pg(1) for more information.

由以上三個分頁命令的命令摘要也可以看出,less最好,難怪作為了man命令的默認分頁工具呢!

說明書頁的組織方式

我們看的各種書籍可以翻頁,但Unix幫助手冊不能翻頁,因為并沒有定義頁碼。它更像是一種具有層次結(jié)構(gòu)的電子書。

通常情況下,unix手冊分成了8節(jié)(不同的系統(tǒng)之間略有差異)。

  1. 命令
  2. 系統(tǒng)調(diào)用
  3. 庫函數(shù)
  4. 特殊文件
  5. 文件格式
  6. 游戲
  7. 雜項信息
  8. 系統(tǒng)管理

從以上8種的大體分類也可以知道,不同節(jié)的知識側(cè)重點不同,適用的人群也就不同,如:

節(jié)1的命令是基礎(chǔ)中的基礎(chǔ),對所有unix使用者都有用;
節(jié)2、節(jié)3、節(jié)7則更適合程序員;
節(jié)7、節(jié)8則更適用于系統(tǒng)管理員;
...... 等等。

如下是各節(jié)的詳細說明:

  1. 命令
    Unix手冊中最重要的部分就是第1節(jié)——命令。這部分包含了大量的unix命令的說明書頁。

  2. 系統(tǒng)調(diào)用
    本節(jié)是系統(tǒng)調(diào)用的說明書頁,在程序中使用系統(tǒng)調(diào)用,以請求內(nèi)核執(zhí)行特定的動作。

  3. 庫函數(shù)
    庫函數(shù),也稱為子例程,是標準化的工具,不會直接涉及內(nèi)核,在程序中執(zhí)行特定的任務(wù)。

  4. 特殊文件
    該部分主要是指那些表示物理設(shè)備的文件,還包括設(shè)備驅(qū)動程序的信息。

  5. 文件格式
    本節(jié)介紹系統(tǒng)中的重要文件格式,包括配置文件。

  6. 游戲
    該節(jié)提供系統(tǒng)中所安裝游戲的說明書頁。在工作中碰到的linux機器,手冊中的第6節(jié)很可能是空的,原因你懂的。

  7. 雜項信息
    既然叫雜項信息,那就是各種混雜信息了。

  8. 系統(tǒng)管理
    主要包括系統(tǒng)管理員用來執(zhí)行工作所使用的所有特殊命令的說明書頁,也就是那些只能由超級管理員使用的命令。

指定要查看的節(jié)號

前面介紹了要想查看某命令的unix手冊,使用man命令后接該命令的名稱,如:

man kill

而上面我們知道m(xù)an手冊分為多節(jié),那么上述這個命令到底查看的是哪節(jié)呢?答案是第一節(jié)。

通過上述命令的輸出(第一行中行首和行末括號中的數(shù)字)也可以判斷:

KILL(1)               User Commands               KILL(1)

一般在命令幫助手冊的最后,有“SEE ALSO”的兩行,如:

SEE ALSO
       kill(2), killall(1), nice(1), pkill(1), renice(1), signal(7), skill(1)  

這說明與kill命令相關(guān)的其它幾個命令的引用。可以看到kill(2),即第二節(jié)中也有個kill的條目,那么應(yīng)該如何查看該條目呢?

依然使用man命令后接要查看的命令的名字,只不過在它們中間指定節(jié)號:

man 2 kill

輸出的首行如下:

KILL(2)               Linux Programmer's Manual               KILL(2)

因而,man kill也等同于man 1 kill

如果希望同時查看kill幫助手冊的第一節(jié)和第二節(jié),可以使用man 1 kill 2 kill

說明書頁的格式

你用man來查看多個命令的幫助手冊,你會發(fā)現(xiàn)這些說明書頁都遵循大體相同的格式,如常見的有:

  • Name
    命令的名稱和用途,一般情況下是一個單行的摘要,因此意思比較模糊。
  • Synopsis
    命令語法,如果想知道一個命令如何使用,看這部分就足夠了。
  • Description
    完整描述(可能很長),包含了很多使用細節(jié)。
  • Environment
    命令使用的環(huán)境變量。
  • Author
    開發(fā)該命令的程序員的名字。
  • Files
    對該命令重要的文件列表。
  • See also
    查看相關(guān)信息的位置,一般顯示了相關(guān)命令以及其在幫助文檔中的節(jié)數(shù)。
  • Diagnostics
    可能的警告和錯誤。
  • Bugs
    錯誤、缺點、警告等。

快速查找命令

在文章情景l(fā)inux--不借助網(wǎng)絡(luò)如何找到你需要的命令中介紹了一種快速查找命令的方式。

如果你想查詢命令的作用,可以使用man -f,后接命令名稱,也可以接多個命令,如:

man -f basename dirname

它將顯示后接命令的一句話作用描述:

basename (1)         - strip directory and suffix from filenames
basename (3)         - parse pathname components
dirname (1)          - strip last component from file name
dirname (3)          - parse pathname components

whatis命令等價于man -f

whatis basename dirname
basename (1)         - strip directory and suffix from filenames
basename (3)         - parse pathname components
dirname (1)          - strip last component from file name
dirname (3)          - parse pathname components

文檔結(jié)構(gòu)

unix聯(lián)機手冊是一個文件集,每個文件是一個具體命令的相關(guān)文檔資料。那么,unix聯(lián)機手冊對應(yīng)的文件在哪里能夠找到呢?

前面提到說明書頁中有一節(jié)“FILES”是指該命令的相關(guān)文件,查看man命令的說明書頁中的“FILES”:

FILES
       /etc/manpath.config
              man-db configuration file.

       /usr/share/man
              A global manual page hierarchy.

       /usr/share/man/index.(bt|db|dir|pag)
              A traditional global index database cache.

       /var/cache/man/index.(bt|db|dir|pag)
              An FHS compliant global index database cache.

可見,man的幫助文檔頁存于目錄/usr/share/man中。

至于這些文件是怎樣保存的,文件的格式,文件的內(nèi)容是怎樣的,請自行探索,你會有所收獲的,也可以輔助理解unix聯(lián)機手冊。

Info系統(tǒng)

Info系統(tǒng)獨立于unix手冊,是一個聯(lián)機幫助系統(tǒng),用來記錄GNU實用工具的用法。GNU實用工具在unix世界很普遍,所以掌握如何使用Info系統(tǒng)也大有裨益。

查看info系統(tǒng)中的文件,需要使用info命令,后接要查看的命令,即,info X

info time
File: time.info,  Node: Top,  Next: Resource Measurement,  Up: (dir)

The GNU `time' Command
**********************

This file documents the the GNU `time' command for running programs and
summarizing the system resources they use.  This is edition 1.7, for
version 1.7.

* Menu:

* Resource Measurement::  Measuring program resource use.
* Concept index::  Index of concepts.

使用man time對比一下:

man time
TIME(1)                                                                               General Commands Manual                                                                               TIME(1)



NAME
       time - run programs and summarize system resource usage

SYNOPSIS
       time   [ -apqvV ] [ -f FORMAT ] [ -o FILE ]
              [ --append ] [ --verbose ] [ --quiet ] [ --portability ]
              [ --format=FORMAT ] [ --output=FILE ] [ --version ]
              [ --help ] COMMAND [ ARGS ]

...省略...

unix幫助手冊和info系統(tǒng)的分工不同,決定了所有的unix和linux命令都有說明書頁,但卻不一定有info文件。因此,如果嘗試顯示一個命令的info文件,而系統(tǒng)上沒有時,會默認顯示其說明書頁。

一點兒經(jīng)驗,請笑納

最重要的常常被忽略

man命令常常被大多數(shù)人忽略。現(xiàn)如今,獲取信息的成本非常之低,當你不清楚一個命令的用法時,上網(wǎng)使用搜索引擎就可以輕松解決了。
但,僅僅這樣做并不夠好。

  1. 使用搜索引擎和使用man命令查閱幫助文檔并不沖突;
  2. 輕松不代表高效,你仔細想過沒有?使用搜索引擎和使用man查詢幫助文檔相比,后者效率更高,熟練掌握后成本更低!
  3. 這不是一種非此即彼的選擇,我覺得,兩種方式配合使用會更好。

專項查詢窗口

可以專門開個終端窗口,只為隨時能查詢命令的用法。
一般的終端軟件,如xshellputty CM等都支持將兩個終端窗口以水平或豎直分布的方式同時顯示在屏幕上,一個窗口作為你工作的窗口,另一個則用于查詢命令手冊,工作效率會更高。

!的妙用
另外,在查詢命令的幫助文檔時,如果需要查看另一個命令的幫助信息,或者想知道某個命令的執(zhí)行結(jié)果,這時你大可不必退出當前的說明書頁,也沒必要再重新打開一個終端窗口,你可以直接在當前狀態(tài)下得到你想要的結(jié)果。
比如,在查看basename的幫助文檔時,想要看下dirname的某個參數(shù),輸入“!man dirname”即可,當前頁面會轉(zhuǎn)到dirname的說明書頁,當你從dirname的說明書頁退出后,屏幕顯示“!done (press RETURN)”,此時按回車鍵會再回到basename的幫助文檔頁。

觀其大略

linux命令的參數(shù)一般有多個,最常用的幾個參數(shù)能應(yīng)付得了日常需要,不常用的參數(shù)往往滿足某個特殊的需求。因而,無所事事的時候,不妨粗略閱讀一個命令的說明書頁,目前是大致了解一個命令的作用,大致有哪些參數(shù),結(jié)合實際思考其可以使用的場景。這樣,在尋找命令或參數(shù)上能節(jié)省很多的時間。而且,這種“遍歷式的閱讀文檔”,往往能發(fā)現(xiàn)更加給力的命令和參數(shù)。

總結(jié)

unix文檔系統(tǒng)是一部字典,在這里,我只能給出查閱字典的方法和方法論,無論是unix文檔系統(tǒng)本身,還是文檔系統(tǒng)中的命令們,更多內(nèi)容還有待我們?nèi)ヌ剿鳌?/p>

掌握了查閱unix文檔系統(tǒng)的方法,僅僅是一個開始,但正因為有這樣的開始,你的linux成長之路會比在這之前要更加的暢通和高效。

參考資料

http://www.gnu.org/software/texinfo/
書籍《Unix & Linux 大學(xué)教程》第9章
情景l(fā)inux--不借助網(wǎng)絡(luò)如何找到你需要的命令
Unix文化--RTFM
你為什么必須(從現(xiàn)在開始就)掌握linux

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內(nèi)容