Linux中國

輕鬆使用「Explain Shell」腳本來理解 Shell 命令

在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文件的底部。(備註:原代碼有誤,處理 https 時需要指定加密套件,據微信網友「高小樹」同學的改進,原來的-Gs應該修改為-G --ciphers ecdhe_ecdsa_aes_128_sha。謝謝「高小樹」同學。)

# explain.sh begins
explain () {
  if [ "$#" -eq 0 ]; then
    while read  -p "Command: " cmd; do
      curl -G --ciphers ecdhe_ecdsa_aes_128_sha "https://www.mankier.com/api/explain/?cols="$(tput cols) --data-urlencode "q=$cmd"
    done
    echo "Bye!"
  elif [ "$#" -eq 1 ]; then
    curl -G --ciphers ecdhe_ecdsa_aes_128_sha "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'

Get Help on du Command

獲得du命令的幫助

2.如果你忘了'tar -zxvf'的作用,你可以簡單地如此做:

$ explain 'tar -zxvf'

Tar Command Help

Tar命令幫助

3.我的一個朋友經常對'whatis'以及'whereis'命令的使用感到困惑,所以我建議他:

在終端簡單的地敲下explain命令進入交互模式。

$ explain

然後一個接著一個地輸入命令,就能在一個窗口看到他們各自的作用:

Command: whatis
Command: whereis

Whatis Whereis Commands Help

Whatis/Whereis命令的幫助

你只需要使用「Ctrl+c」就能退出交互模式。

4. 你可以通過管道來請求解釋更多的命令。

$ explain 'ls -l | grep -i Desktop'

Get Help on Multiple Commands

獲取多條命令的幫助

同樣地,你可以請求你的shell來解釋任何shell命令。 前提是你需要一個可用的網路。輸出的信息是基於需要解釋的命令,從伺服器中生成的,因此輸出的結果是不可定製的。

對於我來說這個工具真的很有用,並且它已經榮幸地添加在我的.bashrc文件中。你對這個項目有什麼想法?它對你有用么?它的解釋令你滿意嗎?請讓我知道吧!

請在下面評論為我們提供寶貴意見,喜歡並分享我們以及幫助我們得到傳播。

via: http://www.tecmint.com/explain-shell-commands-in-the-linux-shell/

作者:Avishek Kumar 譯者:dingdongnigetou 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國