Linux 幫助命令

樓+之Linux運維與DevOps實戰(zhàn)第3期

Linux 幫助命令

1. 實驗介紹

1.1 實驗內(nèi)容

Linux 的命令工具繁多,更不用說其在使用時的各項參數(shù),命令我們可以輸入一個大概通過 tab 鍵來提示或自動補全,參數(shù)無法自動補全該如何是好?本實驗將帶領大家學習如何利用已有的幫助工具與文檔查看工具來查看已有的命令參數(shù)

1.2 實驗知識點

  • 內(nèi)建命令與外部命令
  • alias 命令的使用
  • help 命令的使用
  • man 命令的使用
  • info 命令的使用
  • 命令之間的關系

1.3 推薦閱讀

本節(jié)內(nèi)容較簡單,暫無擴展閱讀內(nèi)容。

2. 內(nèi)建命令與外部命令

什么是內(nèi)建命令,什么是外部命令呢?這和幫助命令又有什么關系呢?

因為有一些查看幫助的工具在內(nèi)建命令與外建命令上是有區(qū)別對待的。

內(nèi)建命令實際上是 shell 程序的一部分,其中包含一些比較簡單的 Linux 系統(tǒng)命令,這些命令是寫在 Bash 源碼的 builtins 里面的,通常在 Linux 系統(tǒng)加載運行時 shell 就被加載并駐留在系統(tǒng)內(nèi)存中,并且解析內(nèi)部命令 shell 不需要創(chuàng)建子進程,所以其執(zhí)行速度比外部命令快。比如:history、cd、exit 等等。更多的內(nèi)部命令可以在推薦閱讀的文章中查看到。

外部命令是 Linux 系統(tǒng)中的實用程序部分,因為實用程序的功能通常都比較強大,所以其包含的程序量也會很大,在系統(tǒng)加載時并不隨系統(tǒng)一起被加載到內(nèi)存中,而是在需要時才將其調(diào)用內(nèi)存。雖然其不包含在 shell 中,但是其命令執(zhí)行過程是由 shell 程序控制的。外部命令是在 Bash 之外額外安裝的,通常放在 /bin,/usr/bin/sbin,/usr/sbin 等等。比如:ls、vi等。

簡單來說就是一個是天生自帶的天賦技能,一個是后天得來附加技能。我們可以使用type 命令來區(qū)分命令是內(nèi)建的還是外部的。例如這兩個得出的結果是不同的

type exit

type service

得到的是兩種結果,若是對 ls 執(zhí)行 type 命令,你還能得到第三種結果

builtin-command
# 得到這樣的結果說明是內(nèi)建命令,正如上文所說內(nèi)建命令都是在 Bash 源碼中的 builtins 的 .def 中
xxx is a shell builtin

# 得到這樣的結果說明是外部命令,正如上文所說,外部命令在 /usr/bin or /usr/sbin 等等中
xxx is /usr/sbin/xxx

#若是得到 alias 的結果,說明該指令為命令別名所設定的名稱;
xxx is an alias for xx --xxx

3. alias 命令的使用

alias 是 shell 提供的一個內(nèi)建命令,alias 的作用就是簡化我們命令的輸入,簡單來說就是為一些較長的命令起綽號,讓我們更方便記住、輸入。

舉一個例子能有一個直觀的認識,我經(jīng)常要去 /etc/nginx/conf.d 這個目錄中修改我自定義的配置文件,正常情況下我得這么輸入 cd /etc/nginx/conf.d,但是我不想輸入這么多怎么辦?

alias ngconf='cd /etc/nginx/conf.d'

我通過這樣的一個命令就為 cd /etc/nginx/conf.d 取了一個別名,這樣我們直接輸入 ngconf 就能達到同樣的效果了:

alias-instance

這就是 alias 所帶來的功能,type ls 的時候我們看到 ls is an alias for ls --color=tty 的意思便是我們輸入 ls 等同于輸入 ls --color=tty。

--color 的參數(shù)的作用是幫助我們在列出文件夾中所有文件的同時用顏色區(qū)分文件夾、普通文件、可執(zhí)行文件等等,讓我們能夠一目了然,但是我就是就看看 ls 命令原來的樣子,刪除別名,我們可以用這樣的命令:

unalias ls

執(zhí)行之后我們再用 type 就可以看到 ls 不在是別名了,同時 ls 執(zhí)行之后沒有之前的特殊效果了:

unalias-instance

刪除別名之后我們后悔了,我們還是覺得之前設計的別名還是蠻科學的,但是又記不住之前的別名是怎么設置的了。

不用擔心,直接在 terminal 添加與刪除的別名都只是對當前的 shell 生效,你重新打開一個 terminal 你之前的添加與刪除都沒有了,如果我要設置的 alias 永遠生效的話,我們可以直接在相關的 shell 配置文件中添加相關的命令即可。

例如我不會用 vi 只會用 vim,我想設置一個 alias vi='vim',那么我只需要將該命令寫至相關的 shell 配置文件即可,當前我們用的是 zsh,所以我們寫在 zsh 的配置文件中(若是用 bash 的可以修改 ~/.bashrc 文件):

# 編輯配置文件
vim ~/.zshrc

# 添加配置項
alias vi='vim'

add-alias

注意:若是不知道自己當前使用的是什么 shell 的話可以通過答應環(huán)境命令:echo $SHELL 來查看。

重新打開一個 terminal,我們再次輸入 vi,我們會看到 vim 被打開了,說明我們的別名配置生效了。

當然如果像之前的情況,我們只是想臨時忽略別名的效果并不想刪除別名的話,我們可以這樣操作:

\ls

'ls'

ignor-alias

這便是 alias 命令的簡單使用。

3. help 命令的使用

help 是 bash 的內(nèi)建命令,我們可以通過 type help 查看到,當然本實驗環(huán)境默認為大家提供的是 zsh,所以你會發(fā)現(xiàn)當前的 shell 下根本就沒有該命令,我們只需要通過一下命令就可以直接打開一個新的 bash 環(huán)境:

bash

change-bash

做好了以上的準備,我們就可以愉快的使用 help 命令了,我們可以嘗試下這個命令:

help ls

得到的結果如圖所示,為什么是這樣的結果?

help-ls

因為 help 命令是用于顯示 shell 內(nèi)建命令的簡要幫助信息。幫助信息中顯示有該命令的簡要說明以及一些參數(shù)的使用以及說明,一定記住 help 命令只能用于顯示內(nèi)建命令的幫助信息,不然就會得到你剛剛得到的結果。如圖中 cd 便是內(nèi)建命令:

help-cd

那如果是外部命令怎么辦,不能就這么拋棄它呀。其實外部命令的話基本上都有一個參數(shù)--help 或者是 -h,這樣就可以得到相應的的幫助,看到你想要的東西了。試試下面這個命令是不是能看到你想要的東西了(當然 --help 參數(shù)是工具自帶的,所以不用像 help 一樣在 bash 中)。

ls --help

ls-help

通過這樣的方式,一些我們不常用的參數(shù),但是在某種特定的情況下又需要的時候,我們就可以快速的翻閱,找到我們需要的參數(shù)。

4. man 命令的使用

除此之外還有一個工具 man,你可以嘗試下這個命令

man ls

man-ls

得到的內(nèi)容比用 help 更多更詳細,而且 man 沒有內(nèi)建與外部命令的區(qū)分,因為 man 工具是顯示系統(tǒng)手冊頁中的內(nèi)容,也就是一本電子版的字典,這些內(nèi)容大多數(shù)都是對命令的解釋信息,還有一些相關的描述。通過查看系統(tǒng)文檔中的 man 也可以得到程序的更多相關信息和 Linux 的更多特性。

當然也不代表 help 就沒有存在的必要,當你非常緊急只是忘記該用哪個參數(shù)的時候,help 這種顯示簡單扼要的信息就特別實用,若是不太緊急的時候就可以用 man 這種詳細描述的查詢方式

進入 man 的查看頁面,我們會發(fā)現(xiàn)最左上角顯示 LS (1),在這里,LS 表示手冊名稱,而 (1) 表示該手冊位于第一章節(jié)。這個章節(jié)又是什么?在 man 手冊中一共有這么幾個章節(jié):

章節(jié)數(shù) 說明
1 Standard commands (標準命令)
2 System calls (系統(tǒng)調(diào)用)
3 Library functions (庫函數(shù))
4 Special devices (設備說明)
5 File formats (文件格式)
6 Games and toys (游戲和娛樂)
7 Miscellaneous (雜項)
8 Administrative Commands (管理員命令)
9 其他(Linux特定的), 用來存放內(nèi)核例行程序的文檔。

打開手冊之后我們可以通過 pgup 與 pgdn 或者上下鍵來上下翻看,可以按 q 退出當前頁面。

這便是 man 工具的使用。

5. info 命令的使用

若是你覺得 man 顯示的信息都還不夠,滿足不了你的需求,那試試這個命令 info

info ls

若是遇到 command not found 的情況,是因為環(huán)境的原因,我們需要自己安裝一下 info 工具:

sudo apt-get install info

install-info

得到的信息比 man 更多了,info 的信息來自自由軟件基金會的 GNU 項目,是 GNU 的超文本幫助系統(tǒng),能夠更完整的顯示出 GNU 信息。所以得到的信息當然更多

info-ls

6. 命令之間的關系

man 和 info 就像兩個集合,它們有交集的部分,但與 man 相比,info 工具可顯示更完整的 GNU 工具信息。man 頁包含的某個工具的概要信息在 info 中也會介紹,那么 man 頁中會有 “請參考 info 頁更詳細內(nèi)容” 的字樣。

由此也可以看出 info 中信息的權威。

所以三者的關系應該是 help < man < info

7. 總結

本節(jié)實驗中我們學習了以下內(nèi)容,任何不清楚的地方歡迎與我們交流:

  • 內(nèi)建命令與外部命令
  • alias 命令的使用
  • help 命令的使用
  • man 命令的使用
  • info 命令的使用
  • 命令之間的關系

通過官方文檔能夠最高效的獲取最準確的答案。

請務必保證自己能夠動手完成整個實驗,只看文字很簡單,真正操作的時候會遇到各種各樣的問題,解決問題的過程才是收獲的過程。

*本課程內(nèi)容,由作者授權實驗樓發(fā)布,未經(jīng)允許,禁止轉載、下載及非法傳播。

上一節(jié):挑戰(zhàn):管理服務進程下一節(jié):Linux 日志系統(tǒng)

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,721評論 0 5
  • man,--help,help,info總共四種獲取幫助的命令。 1.man + 命令名稱-----最常用的幫助命...
    笑Skr人啊閱讀 191評論 0 1
  • 幫助命令 man 英語 manual 查看非shell命令,包含解釋,十分詳細 man 命令 或配置文件 man ...
    code_nerd閱讀 274評論 0 0
  • man info 幫助命令 man 命令或配置文件 man ls 查看類似命令 man service...
    星光_22f1閱讀 153評論 0 0
  • CPA的報名馬上要接近尾聲了。今年選擇繼續(xù)參加注冊會計師考試的戰(zhàn)友們,你們是否已經(jīng)報名?是否已經(jīng)開始復習?還是仍然...
    曉麗姐閱讀 692評論 4 4

友情鏈接更多精彩內(nèi)容