提高效率,推薦 5 款命令列工具

sunshinebuel發表於2016-04-22

使用命令列會讓你提高效率,即便是在 Windows 上也是如此。

對於 GUI 專案的易用友好和 CLI 的簡單高效之間,存在一場曠日持久的討論。但我這並不是想推動或是煽動一場聖戰。RebelLabs 曾討論過 JDK 內建工具並取得了不錯的反響。因此我迫切的想分享幾個自己無法割捨的非 JDK 命令列工具。

我確信每一個稱職的開發者都至少對如何用命令列工作有所瞭解,不僅僅是因為一些工具只存在於 CLI 的各種變體,更是因為極客精神!

所有人們討論的細微差別:比如作業系統的選擇(當然是 OSX ,擁有漂亮的鋁合金外殼),最喜歡的shell(真的應該是 ZSH)或者相較於 Emacs、Vim 更加出眾的效能(除非你有比常人更多的手指),這些都不太相關。好吧,這有點網路論戰的意思,但我保證這是最後一次!

所以,我的建議是你應該學會在命令列上使用這些工具,這會對你產生積極的影響,使你至少可以享受半個世紀的愉悅和高效!

總之,在這篇文章中我會和你分享四五個不為人熟知但卻相當出色的命令列工具。作為額外的福利,我也會對如何在 Windows 上正確使用 shell 給出建議,這些知識本身很有價值。

我寫這篇帖子,最主要是因為是我真的很喜歡用這些工具,並且我也想了解其他我所不知道的命令列工具。所以,優秀的讀者請留言告訴我你最喜歡的 CLI 工具,這很重要!現在假定我們都有一個好的、可用的 shell,就讓我們來學習幾個簡潔而有價值的命令列工具吧。

0. HTTPie

在我榜單上第一名是個被稱作 HTTPie 的工具。別害怕,慶幸的是它和瀏覽器沒有任何關係。本質上,它是一個 cURL 封裝器,用來執行來自命令列的 HTTP 請求。HTTPie 增加了很多好的功能,比如自動格式化和智慧高亮輸出,使其更具可讀性。此外,它採用了非常人性化的執行方式,不需要你記住那些模糊的標誌位和選項。要執行 一個 HTTP 請求,你只要簡單的執行 http,去傳送 http POST,還有比這更簡單優美的嗎?

幾乎所有的命令列工具都是簡單的打包安裝,HTTPie 也不例外。你只需要執行下面的命令即可安裝。

在 OSX 上使用 homebrew,這是 OSX 上能夠找到的最好的包管理器:brew install httpie

其他平臺,使用 Python 的 pip命令:pip install –upgrade httpie

我個人在開發一個 REST API 的時候會經常用 HTTPie,因為它能讓我便捷地查詢 API,並且返回結構清晰、易讀的資料資訊。毫無疑問,這款工具免去了很多煩惱和沮喪。幸運的是,應用不僅停留在 REST APIs. 一般來說,所有通過 HTTP 的互動,無論是輸入或者輸出資料,都能以一種易於閱讀的方式完成。

我建議你瀏覽一下他們的網站,花10秒的時間安裝接著執行一下。嘗試去獲取任何網站的原始碼,相信你會對輸出結果感到驚訝。

小提示:將 HTTPie 的優勢同 jq for command line JSON manipulation pup for HTML parsing 結合起來,你將勢不可擋!

1. Icdiff

在 ZeroTurnaround 我有幸接觸到了 Mercurial,一個非常簡單易用的叢集伺服器。在 OSX 上,出色的 GUI 專案 SourceTree 使得 Mercurial 即使在處理複雜問題上,也如清風拂面。不幸的是我總喜歡將 程式、標籤、視窗 的數量控制在最少。由於總開著一個終端視窗,使用 CLI 就變得很有必要。

除了設定中的一個缺陷其他一切都很完美。這是一個讓我無法拒絕的功能:將區別並排顯示。談起 icdiff,這是在每天所用的工具中,我最欣賞的。我們來看一張截圖:

icdiff 本身是一個智慧 Python 指令碼,智慧檢測哪些地方做了修改、新增和刪除。出色的色彩高亮使得使用者很容易區分這三種不同的修改。

要使用icdiff,要完成以下幾個步驟:

再次通過 homebrew 安裝:brew install icdiff

從上述網站手動抓取 Python 指令碼並把它新增到你的環境變數中

當你把 icdiff 和諸如 Mercurial 的叢集伺服器結合到一起的時候,你會發現效果超棒。要想充分的結合,你需要再完成兩個配置步驟,already documented here在這裡有詳細說明。該說明的要點一是,要新增一個封裝指令碼以確保 icdiff 的 one-by-one file diff 可以在整個目錄上執行。其次你需要配置你的叢集伺服器來真正使用 icdiff。上面的連結介紹了針對 Mercurial 的配置細節,將它移植到 Git 上應該也不太難。

2. Pandoc

按照“躬行己說”的精神,我開始通過 CLI 來完成整篇博文。大部分工作是在 OSC 的 iTerm2中藉助 MacVim 完成的。所有的內容都是按照 MarkDown 的標準語法來書寫和統一格式的。這裡唯一的麻煩就是有時你很難準確猜到最終呈現的效果。

這就引出了下一個工具:Pandoc。它是如此強大和萬能,可以說它是 CPL 下的一個奇蹟。我們來看看如何使用它。

隨便想一種標記格式。十有八九,Pandoc 可以將它從一種格式轉換為其它任意一種。比如,我正在用 Vim 寫這篇博文,並且用 Pandoc 將它從 MarkDown 轉換為 HTML,也就是最終看到的結果。它很棒,只需要一個終端和瀏覽器,比起其他需要繫結到特定線上平臺,它完全獨立和離線。

不要把自己限定在一些譬如 MarkDown 的簡單格式,嘗試一些 docx 或 LaTeX 檔案,以 PDF 或 epub 格式匯出,嘗試讓它處理和格式化你的引文。總之它充滿無限可能。

再次使用 brew install pandocdoes 這一技巧。我提及過我非常喜歡 Homebrew 嗎?或許它應該加入我的工具榜單!不管怎樣,你已經領會了它的要義。

3. Moreutils

接下來這個工具實際上是一個一系列好用工具的集合,它非 coreutils:Moreutils。在 moreutils 下,你可以得到任何你能想到的發行版。OSX 使用者可以像我在文章中這樣安裝它,得到這一系列的好處。

下面是簡短描述所包含程式的列表:

  • chronic:悄悄執行一個命令,只要它不掛掉
  • combine:通過布林值計算來合併兩個不同檔案中的行。
  • ifdata:無需解析 ifconfig 輸出就能獲得網路介面資訊
  • ifne:只要標準輸入非空就執行一個程式
  • isutf8:檢查一個檔案或是標準輸入是否是 utf-8 格式
  • lckdo:執行一個帶鎖的程式
  • mispipe:pipe 兩個命令,返回前一個的退出狀態
  • parallel:一次執行多個任務
  • pee:將標準輸入資訊輸出到管道中
  • sponge:獲取標準輸入資訊寫到一個檔案中
  • ts:給標準輸入打上時間戳
  • vidir:在你的文字編輯器中編輯一個目錄
  • vipe:將文字編輯器加到管道中
  • zrun:自動解壓命令引數

維護者暗示自己 sponge 或許是最有用的工具,因為你可以輕鬆地將標準輸入寫到一個檔案中。不過,也不難發現其他諸如 chronic,parallel,以及 pee等命令的優勢。

我個人最喜歡的毫無疑問是 vipe,這也是把這個集合加入榜單的重要原因。

由於資料通過管道從一個命令到另一個命令,所以你可以逐字攔截。即使在你的指令碼里這算不上個有用的工具,但在執行互動式命令的時候,它的確很有幫助。這裡我沒有給出個有用的例子,而是給了你一個修改過的 fortune。

4. Babun

如今 Windows 系統自帶兩個不同的 shell:經典命令列和 PowerShell。讓我們無視他們,來看看 Windows 下真正的命令列工具:Babun!該專案之所以讓人歎為觀止,是因為它將 *NIX 命令列的所有優點以一種預配置的方式帶到Windows 中,一點也不拖泥帶水。

而且,它預設的 shell是我最愛的 ZSH,當然它也能很容易的切換到 Bash,倘若那是你的菜的話。在 ZSH 下,打包了很受歡迎的 oh-my-zsh framework,無需任何配置,它就結合了 ZSH 的所有優點。這歸功於一些非常明智的預設以及一個令人印象深刻的外掛系統。

下載預設的 Babun,其中包含比任何一位理智的開發者所需要的多得多的應用,因此解壓後它有 728 MB。作為回饋,你將獲得比如 Vim 等必備的預裝軟體!

深入研究你會發現,Babun 基本上就是個對 Cygwin 的精美封裝。如果你已經安裝了 Cygwin 你可以無縫地複用那一個。否則它將把自己的 Cygwin 設為預設,並提供給你訪問介面。

更多的興趣點在於 Babun 提供自己的包管理器,再次包裝了 Cygwin 的,以及同時面向自己和 oh-my-zsh 的更新機制。最棒的在於它不要求實際的安裝,也不需要通常的管理員許可權。這對於在一臺鎖定的電腦上工作的人來講再好不過。

我希望這個小的工具集合至少能帶給你一個很酷的玩具,陪你一起玩耍。對我而言,似乎是時候在開始下篇博文之前看一下命令列瀏覽器,徹底丟棄 GUI。

倘若你有任何意見或建議,請告知我們。讓我們把工具分享繼續下去。如果你想聊天,請在 Twitter 上聯絡 RebelLabs:@ZeroTurnaround,他們是一群非常健談和聰明的人。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

提高效率,推薦 5 款命令列工具 提高效率,推薦 5 款命令列工具

相關文章