輕鬆使用“Explain Shell”指令碼來理解 Shell 命令
我們在Linux上工作時,每個人都會遇到需要查詢shell命令的幫助資訊的時候。 儘管內建的幫助像man pages、whatis命令有所助益, 但man pages的輸出非常冗長, 除非是個有linux經驗的人,不然從大量的man pages中獲取幫助資訊是非常困難的,而whatis命令的輸出很少超過一行, 這對初學者來說是不夠的。
在Linux Shell中解釋Shell命令
有一些第三方應用程式, 像我們在Linux 使用者的命令列速查表提及過的’cheat’命令。cheat是個優秀的應用程式,即使計算機沒有聯網也能提供shell命令的幫助, 但是它僅限於預先定義好的命令。
Jackson寫了一小段程式碼,它能非常有效地在bash shell裡面解釋shell命令,可能最美之處就是你不需要安裝第三方包了。他把包含這段程式碼的的檔案命名為“explain.sh”。
explain.sh工具的特性
- 易嵌入程式碼。
- 不需要安裝第三方工具。
- 在解釋過程中輸出恰到好處的資訊。
- 需要網路連線才能工作。
- 純命令列工具。
- 可以解釋bash shell裡面的大部分shell命令。
- 無需使用root賬戶。
先決條件
唯一的條件就是’curl’包了。 在如今大多數Linux發行版裡面已經預安裝了curl包, 如果沒有你可以按照下面的命令來安裝。
# apt-get install curl [On Debian systems] # yum install curl [On CentOS systems]
在Linux上安裝explain.sh工具
我們要將下面這段程式碼插入’~/.bashrc’檔案(LCTT譯註: 若沒有該檔案可以自己新建一個)中。我們要為每個使用者以及對應的’.bashrc’檔案插入這段程式碼,但是建議你不要加在root使用者下。
我們注意到.bashrc檔案的第一行程式碼以(#)開始, 這個是可選的並且只是為了區分餘下的程式碼。
#explain.sh 標記程式碼的開始, 我們將程式碼插入.bashrc檔案的底部。
# explain.sh begins explain () { if [ "$#" -eq 0 ]; then while read -p "Command: " cmd; do curl -Gs "https://www.mankier.com/api/explain/?cols="$(tput cols) --data-urlencode "q=$cmd" done echo "Bye!" elif [ "$#" -eq 1 ]; then curl -Gs "https://www.mankier.com/api/explain/?cols="$(tput cols) --data-urlencode "q=$1" else echo "Usage" echo "explain interactive mode." echo "explain 'cmd -o | ...' one quoted command to explain it." fi }
explain.sh工具的使用
在插入程式碼並儲存之後,你必須退出當前的會話然後重新登入來使改變生效(LCTT譯註:你也可以直接使用命令source~/.bashrc 來讓改變生效)。每件事情都是交由‘curl’命令處理, 它負責將需要解釋的命令以及命令選項傳送給mankier服務,然後將必要的資訊列印到Linux命令列。不必說的就是使用這個工具你總是需要連線網路。
讓我們用explain.sh指令碼測試幾個筆者不懂的命令例子。
1.我忘了‘du -h’是幹嘛用的, 我只需要這樣做:
$ explain 'du -h'
獲得du命令的幫助
2.如果你忘了’tar -zxvf’的作用,你可以簡單地如此做:
$ explain 'tar -zxvf'
tar命令幫助
3.我的一個朋友經常對’whatis’以及’whereis’命令的使用感到困惑,所以我建議他:
在終端簡單的地敲下explain命令進入互動模式。
$ explain
然後一個接著一個地輸入命令,就能在一個視窗看到他們各自的作用:
Command: whatis Command: whereis
Whatis/Whereis命令的幫助
你只需要使用“Ctrl+c”就能退出互動模式。
4. 你可以通過管道來請求解釋更多的命令。
$ explain 'ls -l | grep -i Desktop'
獲取多條命令的幫助
同樣地,你可以請求你的shell來解釋任何shell命令。 前提是你需要一個可用的網路。輸出的資訊是基於需要解釋的命令,從伺服器中生成的,因此輸出的結果是不可定製的。
對於我來說這個工具真的很有用,並且它已經榮幸地新增在我的.bashrc檔案中。你對這個專案有什麼想法?它對你有用麼?它的解釋令你滿意嗎?請讓我知道吧!
請在下面評論為我們提供寶貴意見,喜歡並分享我們以及幫助我們得到傳播。
相關文章
- Shell指令碼中cd命令使用指令碼
- 用Linux Shell指令碼輕鬆管理Radius伺服器Linux指令碼伺服器
- 《Linux命令列與shell指令碼程式設計大全》第五章理解shellLinux命令列指令碼程式設計
- [Shell] Shell 生成 HTML指令碼HTML指令碼
- shell指令碼指令碼
- Shell指令碼常用命令整理指令碼
- shell指令碼中cd命令無效指令碼
- shell和bash指令碼命令學習指令碼
- shell指令碼(6)-shell陣列指令碼陣列
- 理解shell的eval命令
- Shell指令碼介紹與使用指令碼
- hive streaming 使用shell指令碼Hive指令碼
- 使用shell定製awr指令碼指令碼
- Linux命令和shell指令碼學習Linux指令碼
- shell指令碼-if else 語句以及test命令指令碼
- shell指令碼中不識別source命令指令碼
- shell指令碼的命令列引數 - todo指令碼命令列
- 理解Linux Shell和基本Shell指令碼語言的小貼士Linux指令碼
- 【Shell】使用Shell指令碼快速完成SQL指令碼中重複枯燥的任務指令碼SQL
- shell指令碼(二)指令碼
- shell指令碼心得指令碼
- shell指令碼案例指令碼
- 常用shell指令碼指令碼
- 用shell指令碼來給mysql加索引指令碼MySql索引
- 理解Linux Shell和基本Shell指令碼語言的小貼士(一)Linux指令碼
- shell入門--第一個shell指令碼指令碼
- 如何使用zx編寫shell指令碼指令碼
- 使用shell 指令碼備份資料指令碼
- Centos下使用php呼叫shell指令碼CentOSPHP指令碼
- shell指令碼批量操作使用者指令碼
- 使用shell定製addm指令碼指令碼
- shell oracle 建立使用者指令碼Oracle指令碼
- shell指令碼linux命令連續執行指令碼Linux
- Shell指令碼對ps命令隱藏引數指令碼
- shell指令碼基本概念和命令小結指令碼
- 如何加密shell指令碼加密指令碼
- 初識shell指令碼指令碼
- 執行shell指令碼指令碼