Mac命令行效率提升利器篇

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

自動補全

首先我們來給終端命令行加上自動補全的功能,通過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, 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如下圖所示:

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 [別名]='[指令名稱]'

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

image

保存并關閉.zshrc文件,重新啟動命令行后執行別名指令,效果如下所示:

image

如果沒有切換過shell, 還是在系統默認的bash下,則需要把別名的內容添加到bash所對應的.bash_profile文件里面。

參考文章

  1. MAC命令行自動補全(git/maven)
  2. Homebrew介紹和使用
  3. mac安裝autojump
  4. Mac添加命令別名
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,637評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,629評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,976評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,139評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,686評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,411評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,641評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,820評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,362評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,604評論 2 380

推薦閱讀更多精彩內容