命令及查看命令的詳細使用
前言:
通過這篇圖文,讀者可以了解 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 命令知道啥意思了可以查 cd 命令了
whatis cd
看下他的執行結果,怎么有兩個?一樣么?誒看下描述,第一個 cd 說的是 bash 內置的命令,詳見 bash(1),那下面這個 cd 呢,說的是切換工作路徑,好了下面這個 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:標准輸入,就是鍵盤敲東西進來給命令處理,cd 沒有,不過可以看 cat 命令是支持的,這個重要不過暫時可不管
- INPUT FILES:就是把文檔內容輸入進來給命令處理,顯然 cd 不支持,這個重要不過暫時可不管
- ENVIRONMENT VARIABLES:環境變量,他們可以前面加 $ 查看,如 $HOME 設置的是家目錄的變量,這個可先忽略,不過確實重要
- ASYNCHRONOUS EVENTS:這個我也不知道干嘛的,不重要,跳過
- STDOUT STDERR OUTPUTFILES:標准輸出,標准錯誤輸出,輸出到文件,同上面標准輸入和文件輸入對待,暫時不考慮使用
- EXTENDED DESCRIPTION:擴展描述,適合擴展,不過先不考慮
- EXIT STATUS:執行結果返回值,可以了解到命令執行成功和失敗時返回的值,也有可能不返回,這里就有介紹
- 后面還有很多,就重要的我說下,EXAMPLES,SEE ALSO 這兩個內容可以看下,EXAMPLES有不少例子,不過 cd 沒有例子,可能太簡單了,可以換其他命令試下。SEE ALSO 是相關的命令、變量等。多的不講了。我感覺自己都要把自己陷進去了,不過重要的都已經說了,第一種方法就講到這了。
-
- 第二種方法:type 命令配合 help 命令查看幫助
這個方法優點是幫助說明顯示簡潔明了,所以上手快,主要還是省事,缺點就是他只支持內部命令,所以需要 type 命令先判斷這個命令是不是內部命令,是才能用。還有命令幫助文檔太長的話就很麻煩。所以他比較適合查看簡單命令。
-
- type 命令之前講過了,那 help 命令有什么用呢,那不妨直接用它查他自己怎么用的,看下下面的例子
help help
下面是執行結果,大多數內容跟上面的文檔差不多,所以我簡單分析下:
-
第一行是他的命令格式,help 后面跟命令(至於可選項,可不選,可選模式,可不選),然后下面是它的功能,顯示內置命令的幫助信息,至於【pattern】是文字通配符的模式,學會它效率會提升不少,不過先不講,查一堆命令的時候才有用
-
中間是 OPTION 可選項,有三個可選項,后面跟各自的功能介紹,下面是 Argument 可選參數
- Exit Status:執行命令后的返回結果
-
- type 命令之前講過了,那 help 命令有什么用呢,那不妨直接用它查他自己怎么用的,看下下面的例子
簡單提下,本地查找的話還可以命令后面跟 -h 或 --help 也能查看幫助,可以自行試下效果,不過不支持所有命令。下面簡單說下網絡查找
網絡查找
網上的相關資料我沒有特別整理過,不過在找內置 Shell 命令的幫助文檔上,我首推 GNU 的 coreultils 官方文檔,Shell 命令就是 coreutils 這個軟件包里的,這是他的使用手冊http://www.gnu.org/software/coreutils/manual/ ,能解決99%的問題。GNU 是個倡導開源軟件的組織,就是提供免費軟件的團隊。
對了在查看網頁版文檔的時候,如果是谷歌瀏覽器的話,可以用 CTRL + F 鍵找關鍵字,這樣會省事很多,畢竟命令一堆滾動條拉到什么時候,別的沒了。
在查外部命令的時候那就還是 man 命令吧,如果沒看懂,可以找下 man 幫助文檔的底下說不定會有一個幫助網頁。對我就是這么發現 GNU 官網幫助的。
總結
命令的外表與本質-->用 type 判斷命令本質配合 help 命令查內部命令幫助--> whatis 配合 man 看命令外在形式-->實現自學
本質三種:shell 命令,外部命令,其他命令的別名
外表多樣,一般樣子長這樣:命令+可選項+一個參數或多個
重點掌握了 type,help,whatis,man 四個命令及他們之間的組合用法,了解 -h 和 --help 可選項的用法。哦對了 -h 選項有時候不一定是列出幫助文檔,如 poweroff -h 里的 -h 是 halt(掛起的意思),電腦就關機了,所以能用 --help 長選項別用 -h 短選項,指不定發生奇怪的事情,然后還不知道發生了什么。網頁幫助文檔的話是最后一種手段,而且盡量選擇看官方的幫助。
互動環節
大家有沒有比較好的學習 Linux 的資源和網站可以分享下,我需要慢慢改進我的奇怪理解。還有幫助文檔里帶下划線的單詞有什么特殊含義么,現在才發現這個我自己都不知道。