對於系統管理員或程序員來說,當需要在復雜配置的目錄中或者在大型源碼樹中搜尋特定的文本或模式時,grep類型的工具大概是最受歡迎的。
如果grep是你最喜歡的工具之一,那麼你可能會更喜歡ack。ack是一個基於Perl的類似於grep的命令行工具,但是搜索速度更快,能力比grep更強。尤其是當你是程序員時,我強烈推薦你使用ack來取代grep。
ack的用法非常適用與代碼搜索,因此程序員可以在源碼樹中進行復雜的查詢,而只需要更少的按鍵。
ack的一些非常強大的特性:
相比於搜索速度,ack總體上比grep更快。ack的速度只要表現在它的內置的文件類型過濾器。在搜索過程中,ack維持著認可的文件類型的列表,同時跳過未知或不必要的文件類型。它同樣避免檢查多余的元數據目錄。
盡管在大多數Linux發行版中是ack是標准包,可輕易獲得(比如在基於debian的系統中,是ack-grep包,而在基於RedHat的系統中則是ack包),但是與發行版捆綁的ack版本仍然是1.x,而ack2.0已經發布,而且擁有更多特性。
因此我准備在官方網站下載,然後安裝ack。
方便的是,ack在官網可可作為一個單獨的Perl腳本獲得,其中整合了所有需要依賴的模塊。因此,你不需要額外安裝Perl模塊來運行這腳本。
為了在你的Linux系統中安裝ack,去官網下載最新版本的ack。在寫本文時,最新的版本是2.12
$ wget http://beyondgrep.com/ack-2.12-single-file $ sudo mv ack-2.12-single-file /usr/local/bin/ack $ sudo chmod 0755/usr/local/bin/ack
需要注意的是,在基於Debian的系統中,有一個獨立的包也叫ack(漢碼轉換器)。所以如果你碰巧有使用那個包,那麼你就必須重命名ack來避免命名沖突了。
$ ack -w eat
$ ack -Q '$path=.'/etc
$ ack about --ignore-dir=downloads
$ ack --php --groupprotected
$ ack --make -l CFLAG
$ tail -f /var/log/syslog | ack --passthru 192.168.1.10
$ ack --help-type