Mac命令行效率提高利器篇

在Mac系統下熟練使用命令行可使工做更高效,幾乎全部的操做均可以用命令行來完成。但這些操做的前提是須要記住各類命令,並且系統原生的終端沒有自動補全功能,這讓用慣了Xcode的咱們尤爲不習慣。另外,命令行下路徑的切換也顯得較爲繁瑣。工欲善其事必先利其器,本文將介紹一些工具和設置,讓命令行使用起來更方便更智能。html

自動補全

首先咱們來給終端命令行加上自動補全的功能,經過Homebrew安裝bash_completion便可。固然須要先安裝brew:git

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
複製代碼

在命令行中輸入上述命令安裝Homebrew. 這是一款Mac OS平臺下的軟件包管理工具,擁有安裝、卸載、更新、查看、搜索等衆多功能。經過一條指令,就能夠實現包管理,而不用關心各類依賴和文件路徑的狀況。github

Homebrew 會將軟件安裝到獨立目錄,並將文件連接至/usr/local路徑shell

安裝完Homebrew後就可使用它來安裝bash_completion了,在終端中輸入以下命令:數據庫

brew install bash-completion
複製代碼

安裝完成後會提示:segmentfault

# 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跳轉到該文件。ruby

默認brew會安裝bash-completion,能夠先經過brew list查看,沒有再執行上面的安裝步驟。bash

完成上面的操做以後就可使用自動補全了,好比咱們在某個路徑下要打開某個文件,可是忘記那個文件的名字了,或者只記得前幾個字母,有了自動補全,咱們只須要輸入open而後直接按tab鍵就會出現目錄下的文件了,而後繼續按tab選擇你須要打開的文件名直接回車確認就能夠了。效果以下:app

除了系統自有的一些命令補全外,咱們還能夠把git的經常使用命令也加入到自動補全裏面。首先到git主頁下載contrib/completion/目錄下的git-completion.bash文件,並將文件放到我的主目錄下:curl

而後修改.bash_profile文件,在其中添加下列內容:

mv git-completion.bash ~/.git_completion.bash
# Add to your .bash_profile:
source ~/.git_completion.bash
複製代碼

完成後從新啓動下命令行終端就可使用git的自動補全了,效果以下所示:

路徑切換

在Mac下使用命令行切換路徑一般是使用cd命令,好比在命令行中輸入:

cd /Users/Ryan/iOSDev/Documents 
複製代碼

便可跳轉到Documents目錄下,可是繁瑣的地方在於每次都須要輸入完整路徑。能不能讓命令行記住經常使用的一些路徑且快速切換呢?能夠!使用autojump就能夠實現。autojump是一個命令行工具,它容許你直接跳轉到你經常使用的目錄,而不受當前所在目錄的限制。

autojump的安裝環境推薦使用zsh, zshshell的一種,在Mac OS下默認的shellbash, 但其實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以下圖所示:

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

autojump會對訪問過的文件和文件夾按照使用頻率排序,因此想經過autojump快速跳轉的路徑必須是以前訪問過已經被autojump記錄到數據庫中的路徑,這樣它纔會再按照頻率列出文件和文件夾。

上文只是對autojump基本功能的介紹,至於它的詳細功能列表能夠到其主頁上查看。這邊就再也不贅述了。另外還一個和功能相似的快速跳轉工具fasd, 感興趣的話也能夠自行瞭解下。

除此以外,還有一個賴人軟件 TermHere, 下載 安裝後在任意位置(文件夾上或者文件夾裏面目錄中)右擊鼠標,會發現多了一個菜單項「New Terminal Here」點擊它就會出現終端窗口,而且當前目錄就是你所指的位置。

命令別名

有時候命令行的命令太長了,咱們可使用一個別名(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 [別名]='[指令名稱]'
複製代碼

添加完後以下圖所示,咱們添加了兩個別名sfysfn分別表示顯示隱藏文件和不顯示隱藏文件。在命令行中輸入這兩個命令和上面的長串命令同等功效。

保存並關閉.zshrc文件,從新啓動命令行後執行別名指令,效果以下所示:

若是沒有切換過shell, 仍是在系統默認的bash下,則須要把別名的內容添加到bash所對應的.bash_profile文件裏面。

參考文章

  1. MAC命令行自動補全(git/maven)
  2. Homebrew介紹和使用
  3. mac安裝autojump
  4. Mac添加命令別名
相關文章
相關標籤/搜索