Mac命令列效率提升利器篇
在Mac系統下熟練使用命令列可以使工作更高效,幾乎所有的操作都可以用命令列來完成。但這些操作的前提是需要記住各種命令,而且系統原生的終端沒有自動補全功能,這讓用慣了Xcode的我們尤其不習慣。另外,命令列下路徑的切換也顯得較為繁瑣。工欲善其事必先利其器,本文將介紹一些工具和設定,讓命令列使用起來更方便更智慧。
自動補全
首先我們來給終端命令列加上自動補全的功能,通過 ofollow,noindex">Homebrew 安裝 bash_completion
即可。當然需要先安裝 brew
:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
在命令列中輸入上述命令安裝 Homebrew
. 這是一款Mac OS平臺下的軟體包管理工具,擁有安裝、解除安裝、更新、檢視、搜尋等眾多功能。通過一條指令,就可以實現包管理,而不用關心各種依賴和檔案路徑的情況。
Homebrew 會將軟體安裝到獨立目錄,並將檔案連結至/usr/local路徑
安裝完 Homebrew
後就可以使用它來安裝 bash_completion
了,在終端中輸入如下命令:
brew install bash-completion
安裝完成後會提示:
# Add the following lines to your ~/.bash_profile: if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi
按照提示將上述語句(最後三行)複製到 .bash_profile
檔案中。需要注意的是 .bash_profile
為隱藏檔案,所以要先顯示所有檔案,然後在Finder中按快捷鍵 Command+Shift+G
跳轉到該檔案。

image
預設brew會安裝bash-completion,可以先通過 brew list
檢視,沒有再執行上面的安裝步驟。
完成上面的操作之後就可以使用自動補全了,比如我們在某個路徑下要開啟某個檔案,但是忘記那個檔案的名字了,或者只記得前幾個字母,有了自動補全,我們只需要輸入 open
然後直接按 tab
鍵就會出現目錄下的檔案了,然後繼續按 tab
選擇你需要開啟的檔名直接回車確認就可以了。效果如下:

image
除了系統自有的一些命令補全外,我們還可以把 git
的常用命令也加入到自動補全裡面。首先到 git
的 主頁 下載 contrib/completion/
目錄下的 git-completion.bash
檔案,並將檔案放到個人主目錄下:

image
然後修改 .bash_profile
檔案,在其中新增下列內容:
mv git-completion.bash ~/.git_completion.bash # Add to your .bash_profile: source ~/.git_completion.bash
完成後重新啟動下命令列終端就可以使用 git
的自動補全了,效果如下所示:

image
路徑切換
在Mac下使用命令列切換路徑通常是使用 cd
命令,比如在命令列中輸入:
cd /Users/Ryan/iOSDev/Documents
即可跳轉到 Documents
目錄下,但是繁瑣的地方在於每次都需要輸入完整路徑。能不能讓命令列記住常用的一些路徑且快速切換呢?可以!使用 autojump
就可以實現。 autojump
是一個命令列工具,它允許你直接跳轉到你常用的目錄,而不受當前所在目錄的限制。
autojump
的安裝環境推薦使用 zsh
, zsh
是 shell
的一種,在Mac OS下預設的 shell
為 bash
, 但其實 zsh
是更強大的 shell
且其完全相容 bash
, 我們先來看下怎麼安裝並切換到 zsh
:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
在命令列中輸入上述命令即可安裝 zsh
, 安裝成功後我們需要將系統的預設 shell
設定為 zsh
:
chsh -s /bin/zsh
這個命令會重啟 shell
, 完成後我們在命令列輸入:
echo $SHELL
即可檢視當前使用的是哪個 shell
( bash
or zsh
).
shell其實就是一個c語言編寫的程式,我們在命令列輸入的命令,都是經過shell解釋後傳送給作業系統(核心)執行。
切換 shell
之後我們可以來安裝 autojump
了,還是和上面一樣使用 brew
來安裝,在命令列中輸入如下命令:
brew install autojump
安裝完成後,系統使用者根目錄下會出現 .zshrc
檔案(和上面的 .bash_profile
同一個目錄),跳轉到這個檔案並用文字編輯器開啟,在其中找到 plugins=
, 修改為:
plugins=( git autojump )
之後新起一行,新增:
[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh
修改完內容後 .zshrc
如下圖所示:

image
安裝完後我們就可以使用 autojump
來快速跳轉路徑了,在 autojump
中使用 j
(別名)來代替 cd
指令,比如我們想跳轉到一個路徑,但是我們記不得路徑全稱,只記得裡面有 perfect
這個單詞,那麼就直接在命令列輸入 j perfect
然後按 tab
鍵,就會出來包含 perfect
的路徑,繼續按 tab
鍵選擇需要進入的路徑再回車確認即可切換到該路徑下:

image
autojump
會對訪問過的檔案和資料夾按照使用頻率排序,所以想通過 autojump
快速跳轉的路徑必須是之前訪問過已經被 autojump
記錄到資料庫中的路徑,這樣它才會再按照頻率列出檔案和資料夾。
上文只是對 autojump
基本功能的介紹,至於它的詳細功能列表可以到其 主頁 上檢視。這邊就不再贅述了。另外還一個和功能類似的快速跳轉工具 fasd
, 感興趣的話也可以自行 瞭解 下。
除此之外,還有一個賴人軟體
TermHere
, 下載
安裝後在任意位置(資料夾上或者資料夾裡面目錄中)右擊滑鼠,會發現多了一個選單項 「New Terminal Here」
點選它就會出現終端視窗,並且當前目錄就是你所指的位置。

image
命令別名
有時候命令列的命令太長了,我們可以使用一個別名(alias)來代替,類似於程式中的巨集。比如我們顯示隱藏檔案的命令為:
defaults write com.apple.finder AppleShowAllFiles true ; killall Finder
這個命令太長了,我們可以新增一個別名來代替。開啟 .zshrc
檔案,在其中新增下列內容:
alias sfy="defaults write com.apple.finder AppleShowAllFiles true ; killall Finder" alias sfn="defaults write com.apple.finder AppleShowAllFiles false ; killall Finder"
需要注意的是等號兩邊均無空格,指令名稱中如有空格,需用引號包裹,具體格式為:
alias [別名]='[指令名稱]'
新增完後如下圖所示,我們添加了兩個別名 sfy
和 sfn
分別表示顯示隱藏檔案和不顯示隱藏檔案。在命令列中輸入這兩個命令和上面的長串命令同等功效。

image
儲存並關閉 .zshrc
檔案,重新啟動命令列後執行別名指令,效果如下所示:

image
如果沒有切換過shell, 還是在系統預設的bash下,則需要把別名的內容新增到bash所對應的.bash_profile檔案裡面。