命令及查看命令的詳細使用 前言: 通過這篇圖文,讀者可以瞭解 Linux 里命令的外表和本質,及如何利用 linux 自帶的幫助說明來自學一個自己沒用過的命令。 自學要求:有點英語基礎最好,這個等下看幫助文檔的時候就知道了,能看懂大多數英語單詞自學就沒問題 正文: 首先,Linux 里的命令分為內置 ...
命令及查看命令的詳細使用
前言:
通過這篇圖文,讀者可以瞭解 Linux 里命令的外表和本質,及如何利用 linux 自帶的幫助說明來自學一個自己沒用過的命令。
自學要求:有點英語基礎最好,這個等下看幫助文檔的時候就知道了,能看懂大多數英語單詞自學就沒問題
正文:
首先,Linux 里的命令分為內置的Shell命令和外部命令,那這兩種命令有區別麽,本質是什麼?
下麵是我的個人理解:其實你可以把他們簡單理解為系統預裝的工具軟體和自己後來裝的工具軟體,深入到本質講的話,一個具體的命令就是一段編程語言編寫的程式以二進位的方式保存的可執行文件,shell是c語言編寫的,外部命令那可能是各種編程語言寫的。所以說 shell 命令是肯定有的,是系統自帶的;而外部命令可能預設沒有,所以要用這個命令得先安裝,比如我的第一篇 linux 筆記里的 tree 命令預設就是沒有,得自己裝 tree 這個軟體。其實安裝系統的時候就有自定義安裝哪些軟體的界面,也就是在裝個人工具包。這都是我個人的奇怪理解,各位視個人理解程度看吧,有不對望提出。
基礎知識
一步步來,上面講了我理解的 linux 里命令的本質,下麵說下他的外表,也就是我們常看到它的樣子
一般命令的格式:command 【option】 arguments ...
很簡單舉個例子像下麵這個命令
rm -rf test.txt
rm:就是 command,命令
-rf:就是 option,可選項
test.txt:就是argument,參數
這裡就簡單瞭解下就好,實際上後面看幫助文檔就明白一個命令的外表能有多花哨了,所以這個沒必要認真記,看看過好了,就是參數的話後面可以跟好多個,也就是 test.txt 後面還能跟其他文件,rm 可以一次性刪一堆文件,就這些
查看命令類型
本質和外表都講完了,然後怎麼知道一個命令(內在)到底是那個類型呢,可以用 type 命令後面跟要查的命令,這個命令有三種返回結果。
- 情況一如下所示
上面的命令是查看 cd 命令的類型,執行結果看到 shell 就知道了,cd 是內部命令;那外部命令的執行結果呢,我就用 tree 命令舉個例子。
- 情況二如下圖所示
執行結果返回的是一個路徑,那就是 tree 命令的存放路徑,所以 /usr/bin 就是用戶的二進位命令存放的地方,usr 其實是 user 的縮寫,bin 其實是 binary(二進位)的縮寫,這樣方便記憶,現在也正好開始積累起 linux 目錄了,再可以用 ls -l /usr/bin/tree 命令看下文件類型,是可執行文件。所以當我們執行一個命令的時候其實是到他存放的路徑里打開了這個文件。
但是用 type 命令有時候會有第三個執行結果,就比方說 mv 命令。
- 情況三如下圖所示
執行結果:mv 是 mv -i 的別名,這個什麼意思呢,其實有個 alias 的命令,可以把一段命令起個其他的名字,也就是說執行 mv 其實就是執行 mv -i 這個命令。至於 alias 命令和 mv 後面多了 -i 是怎麼回事我下麵講完查看幫助文檔你就會自學了,先理解下 type 命令吧。
多想了一下,其實可能還有第四種情況,就是既是外部命令又取了別名,執行結果可能是既返迴路徑又顯示別名的情況,那實際上也是上面這三種情況的組合,這個個人自行嘗試下吧,也就當練習type命令的使用。
查看幫助:
查看幫助有兩種手段,一種網路上查看相關幫助文檔,另一種也是最常用的,linux 上直接查看幫助文檔。先講最常用的本地查看方法
- 本地查看,有兩種主流查看方式(當然我也就只知道這兩種,不過這兩種方法幾乎解決一切問題)
- 第一種方法: whatis 命令配合 man 命令查看幫助文檔,這種查看方法的優點是全,支持查詢的命令全,關於幫助文檔的內容全,所以缺點也明顯,查看幫助文檔操作略麻煩,但是他能解決幾乎所有命令使用的問題,他絕對是我們學習 linux 的主力。就以查看最基礎的 cd 命令為例
- whatis 命令的作用查看幫助手冊頁和命令描述,什麼意思呢既然能查看命令描述,那就先看下它怎麼用唄,鍵入下麵的命令
whatis whatis
看下他執行的結果,怎麼說的,顯示手冊頁碼描述,手冊頁碼呢就是(1),描述呢就是 - display ... 這段,至於頁碼等下馬上在 man 命令里用到了
- whatis 命令的作用查看幫助手冊頁和命令描述,什麼意思呢既然能查看命令描述,那就先看下它怎麼用唄,鍵入下麵的命令
- 第一種方法: whatis 命令配合 man 命令查看幫助文檔,這種查看方法的優點是全,支持查詢的命令全,關於幫助文檔的內容全,所以缺點也明顯,查看幫助文檔操作略麻煩,但是他能解決幾乎所有命令使用的問題,他絕對是我們學習 linux 的主力。就以查看最基礎的 cd 命令為例
-
-
- 好了 whatis 命令知道啥意思了可以查 cd 命令了
whatis cd
看下他的執行結果,怎麼有兩個?一樣麽?誒看下描述,第一個 cd 說的是 bash 內置的命令,詳見 bash(1),那下麵這個 cd 呢,說的是切換工作路徑,好了就是我們要找的 cd 幫助
- 好了 whatis 命令知道啥意思了可以查 cd 命令了
-
-
-
- 那下麵可以用 man 命令了,它的作用是查看幫助文檔,用法是 man + 手冊頁碼 + 要查看的命令,如下所示,所以頁碼作用就是區分相同命令名,但是是不同命令的手冊位置
man 1p cd
看下執行結果,跳出來一個新的視窗界面,底下有提示按 h 獲取幫助,按 q 退出,其實這就是幫助文檔了,怎麼看文檔 pageup 和 pagedn 可以上下翻頁,按 e 和 y 可以下上逐行翻看,按 d 和 u 可以半頁的翻看,不多說了這些會一個就行,具體操作按 h 可以看到。比較常用的我說下如查找某個關鍵字可以鍵入 / 要找的內容 ,按回車關鍵字就都會標記出來,還有上下左右鍵可以看文檔這兩個操作就夠了。感覺這看文檔操作都能寫篇長文了,就先講這些。先關註現在要看的 cd 幫助文檔
- 那下麵可以用 man 命令了,它的作用是查看幫助文檔,用法是 man + 手冊頁碼 + 要查看的命令,如下所示,所以頁碼作用就是區分相同命令名,但是是不同命令的手冊位置
-
下麵是我的分析:
-
-
- PROLOG:這個不重要,可忽略
- NAME:命令的名字 cd —— 它的功能描述,切換工作路徑
- SYNOPSIS:用法,也即命令格式,cd 有兩種用法,第一種是 cd +【可選項】 +【目錄】,第二種是 cd -
- DESCRIPTION:對 cd 命令詳細用法描述,這裡有細節,看這個對 cd 的使用有很大的提升,當然它的內容不少,所以視情況一般關鍵字搜索找自己需要看的細節效率高點,全看沒必要
- OPTIONS:對 cd 命令後面跟的可選項的作用描述,如 cd -L 是後面跟 .. 和鏈接文件的話先處理 .. 再處理鏈接文件, -P 選項相反,這什麼意思我也不太清楚,但是上面DESCRIPTION描述里應該有解釋,這個我就不多說了,因為這也不常用(當然這是對於我來說,我還沒怎麼碰到這個選項用法)
- OPERANDS:這個是講 cd 後面跟的操作數(參數)可以有哪些,看內容 cd 後面可以有目錄和 - 兩個選項,目錄這個我們早會用了,就是要切到的路徑,那 cd - 又有什麼作用呢,看內容說的是跟 cd "$OLDPWD" && pwd ,其實就是上次的路徑跟當前路徑可以來回切換,這個還挺常用,長得也很特殊挺好記的,記下吧
- 後面還有很多,就重要的我說下,STDIN,STDOUT,EXAMPLES,這三個內容可以看下,分別是標準輸入輸出和 cd 用法的舉例使用,不過輸入輸出跟管道重定向有關,現在沒必要,EXAMPLES可以先看起來,不過 cd 沒有例子,可能太簡單了,可以換其他命令試下,多的不講了。我感覺自己都要把自己陷進去了,不過重要的都已經說了,第一種方法就講到這了。
-
第二種方法:在查看幫助的命令後面加 --help 或 -h 選項,這個方法優點是幫助說明顯示簡潔明瞭(就是 man 文檔里跟命令不搭嘎還有太過於細緻的內容刪減了),所以上手快,也不需要掌握瀏覽文檔要會的按鍵(當然這個不是關鍵)主要還是省事,缺點就是支持的命令沒有 man 多,還有命令幫助文檔一個屏幕沒顯示出來的話就很麻煩。所以他比較適合可選項不多的簡單命令。
- 那下麵來舉個例子看下,cd 不能舉了,剛看了說明沒有 -h 或 --help選項,所以看下 cat 命令
cat --help
下麵是執行結果,大多數內容跟上面的文檔差不多,所以我簡單分析下:
-
Usage :用法,可以看到一般命令的格式,cat 後面加選項再加要查看的文件名(或者是跟標準輸入輸出)
-
中間是OPTION可選的參數,-A 是短選項,--show-all 是長選項,這兩個是等價的,然後後面是它的功能,等價 -vET,這是組合選項相當於 -v -E -T 的功能之和,所以又要看這三個參數了,不過我就不細講了,後面是英語問題了
- Examples:例子,cat 命令就有兩個例子了,分別是輸出文件內容和鍵盤列印什麼就輸出什麼
- 那下麵來舉個例子看下,cd 不能舉了,剛看了說明沒有 -h 或 --help選項,所以看下 cat 命令
-
本地查找的話就這些,下麵簡單說下網路查找
- 網路查找
網上的相關資料我沒有特別整理過,不過在找內置 Shell 命令的幫助文檔上,我首推 GNU 的 coreultils 官方文檔,Shell 命令就是 coreutils 這個軟體包里的,這是他的使用手冊http://www.gnu.org/software/coreutils/manual/ ,能解決99%的問題。GNU 是個倡導開源軟體的組織,就是提供免費軟體的團隊。
對了在查看網頁版文檔的時候,如果是谷歌瀏覽器的話,可以用 CTRL + F 鍵找關鍵字,這樣會省事很多,畢竟命令一堆滾動條拉到什麼時候,別的沒了。
在查外部命令的時候那就還是 man 命令吧,如果沒看懂,可以找下 man 幫助文檔的底下說不定會有一個幫助網頁,你可以看我上面那張圖最底下是不是寫著 GNU coreutils online help 後面跟著一個網址。對我就是這麼發現 GNU 官網幫助的。
總結
命令的外表與本質-->用 type 判斷命令本質--> whatis 配合 man 看命令外在形式-->實現自學
本質三種:shell 命令,外部命令,其他命令的別名
外表多樣,一般樣子長這樣:命令+可選項+一個參數或多個
重點掌握了 type,whatis,man三個命令的用法,瞭解 -h 和 --help 可選項的用法。哦對了 -h 選項有時候不一定是列出幫助文檔,如 poweroff -h 里的 -h 是 halt(掛起的意思),電腦就掛機了,所以能用 --help 長選項別用 -h 短選項,指不定發生奇怪的事情,然後還不知道發生了什麼。網頁幫助文檔的話是最後一種手段,而且儘量選擇看官方的幫助。
互動環節
大家有沒有比較好的學習 Linux 的資源和網站可以分享下,我現在苦學中,需要慢慢改進我的奇怪理解。