一些命令行效率工具

jopen 9年前發布 | 15K 次閱讀 命令行

Zsh

Zsh 也許是目前最好用的 bash 工具了。這里列舉了 zsh 的一些優點:為什么要使用 zsh

Mac 自帶 zsh,不過我們當然要用最新版啦,其他發行版請參照各自的軟件安裝方法。安裝完畢后,重新打開 iTerm2。

brew install zsh
chsh -s `which zsh`

補全

zsh 的命令補全功能非常強大,可以補齊路徑,補齊命令,補齊參數等。(請問你記住 tar 的所有參數了嗎??,只要 tar -加 tab 鍵,再也不用 rtfm 了??)

一些命令行效率工具 zsh auto complete

按下 tab 鍵顯示出所有待選項后,在按一次 tab 鍵,即進入選擇模式,進入選擇模式后,按 tab 切向下一個選項,按 shift+tab 鍵切向上一個選項,ctrl+f/b/n/p 可以向前后左右切換。

一些命令行效率工具 zsh tab 切換

以前殺進程是ps aux | grep xxx查進程的 PID,然后kill PID。有了 zsh,直接kill xxx然后按下 tab 鍵即可~

kill emacs  # 按下 tab,變成: kill 59683

別名

zsh 不僅支持普通 alias,還支持針對文件類型的 alias。我配置的文件類型 alias 如下:

alias -s gz='tar -xzvf'
alias -s tgz='tar -xzvf'
alias -s zip='unzip'
alias -s bz2='tar -xjvf'
alias -s php=vi
alias -s py=vi
alias -s rb=vi
alias -s html=vi
alias gcid="git log | head -1 | awk '{print substr(\$2,1,7)}' | pbcopy"

配置完畢之后,在 zsh 下直接輸入xxx.rb,將自動用 vi 打開,直接輸入xxx.tgz,將直接按照tar -xzvf解壓。最后一個gcid將當前 git 項目的第一個 commit 的 id 復制到系統剪切板(pbcopy是 Mac 下的復制到系統剪切板命令,linux 請參考相應的發行版更改),在執行 rebase 的時候特別方便。

跳轉

zsh 的目錄跳轉更為智能,你無需輸入cd,直接輸入路徑即可。..表示后退一級目錄,../../表示后退兩級,依次類推。

輸入d,將列出當前 session 訪問過的所有目錄,再按提示的數字即可進入相應目錄。

~
> d
0   ~
1   ~/Applications
2   ~/.proxychains
3   /opt/homebrew-cask/Caskroom

~ > 1 ~/Applications</pre>

歷史記錄

zsh 的歷史記錄跨 session,可以共享。歷史記錄支持受限查找。比如,輸入git,再按向上箭頭,會搜索用過的所有 git 命令。

通配符搜索

ls *.png查找當前目錄下所有 png 文件,ls **/*.png遞歸查找。

oh-my-zsh

oh-my-zsh 是最為流行的 zsh 配置文件,提供了大量的主題和插件,極大的拓展了 zsh 的功能,推動了 zsh 的流行,有點類似于 rails 之于 ruby。

# install

via curl

sh -c "$(curl -fsSL

via wget

sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"</pre>

安裝過后,source .zshrc使之生效。

主題

oh-my-zsh 內置了大量主題,可在~/.oh-my-zsh/themes中查看具體的配置。官網提供了一些主題的截圖。也可參見我的知乎回答

# 我用的主題是 avit,可以很好的顯示 git 信息
/Volumes/Disk Image/cloudoffice  master ?                                     37m
> 鼠標在新一行

插件

oh-my-zsh 提供極為豐富的插件,在~/.oh-my-zsh/plugins目錄下查看具體的配置。在.zshrc中寫入plugin(git autojump osx)即可使用插件,下面介紹幾個特別優秀的插件。

git

精簡 git 命令,減少輸入字符數。參見 Plugin:git。該插件提供的快捷命令比較多,挑幾個常用和好記的記憶即可,不必全記。我常用的有gst, ggp, gco, gcm, gcp 等。

autojump

autojump 按照你的使用頻率記錄路徑,使得目錄的跳轉更為方便。安裝brew install autojump。如需跳轉到包含 ‘foo’ 的目錄,執行j foo,這是最基礎,也是最常用的命令。除此之外,還有jc, jo, jco命令,查看官網文檔獲取更多的使用方法。

osx

該插件增強 Mac 下的使用體驗,提供了如下命令:

  • cdf: 在 Finder 中打開要 cd 的目錄;
  • quick-look: 快速預覽該文件,類似于在 Finder 中按下空格鍵;
  • man preview: 在 preview 中打開 man page;
  • itunes: 命令行操作 iTunes。
  • </ul>

    > itunes
    itunes:shift:2: shift count must be <= $#
    Usage: itunes <option>
    option:
        launch|play|pause|stop|rewind|resume|quit
        mute|unmute control volume set
        next|previous   play next or previous track
        shuf|shuffle [on|off|toggle]    Set shuffled playback. Default: toggle. Note: toggle doesn't support the MiniPlayer.
        vol Set the volume, takes an argument from 0 to 100
        help    show this message and exit

    其他命令可查看插件

    proxychains

    proxychains 是命令行的KX上網工具。安裝brew install proxychains-ng。如圖所示,亞馬遜 S3 存儲服務和 github 并不穩定,有時候需要KX上網才能訪問。

    一些命令行效率工具 proxychains

    其他

    ag

    ag 是一個新的搜索工具:

    • ack相比,速度有了巨大的提升,這里有一個對比
    • 搜索會忽略.gitignore.hgignore中的 pattern;
    • 不想搜索的文件可以把對應的 pattern 寫到.agignore中;
    • 命令比ack短 33%,且一只手可以按全。
    • </ul>

      最后一條雖然看似戲謔,卻道出了工具的本質:哪怕是能減少輸入一個字符,也是必要的進步。

      htop

      htop 是一款運行于 Linux 系統監控與進程管理軟件,用于取代 Unix 下傳統的 top。與 top 只提供最消耗資源的進程列表不同,htop 提供所有進程的列表,并且使用彩色標識出處理器、swap 和內存狀態。1

      一些命令行效率工具 htop

      htop 命令優點2: