使用 zsh 的 alias 讓指令縮短

2020-06-27 · 3 min read

alias 是什麼?

看到有人在 terminal 輸入短短幾個字就完成本來要輸很多字的指令,例如輸入

gcam 'message'

等同於輸入

git commit -a -m 'message'

這些縮短指令的東西叫做 alias,這個英文單字的意思就是 化名、假名 的意思,也就是說可以想成 git commit -a -m 這個指令它的化名是 gcam,所以呼叫 gcam 就等同呼叫 git commit -a -m;這好比有個人本名是 Tony Stark,而他的化名是 Iron Man,所以有事要找這個人的話,除了可用他的本名 Tony Stark 叫他以外,也可以用 Iron Man 來叫他。

既然是 alias 是化名的意思,那也意味著可以自己設定某個指令的 alias,隨自己喜歡怎麼叫它就怎麼叫。看到這麼方便省時的方法,當然也想設定一下。


zsh 內建 alias

查資料的時候了解到許多人會安裝 zsh 的 shell,就可以直接用一些內建的 alias 而不用自己再設定。

我本來就是用 zsh 所以不用再跑安裝這個步驟,然後查了一些資料都指出安裝 zsh 後,會有一個文件裡面存放設定好的 alias,這個文件是 ~/.oh-my-zsh/plugins/git/git.plugin.zsh

我用 terminal

  • 輸入指令
open ~/.oh-my-zsh/plugins/git/

開啟 git 這個資料夾確定 git.plugin.zsh 在裡面,然後用 vim 開啟 git.plugin.zsh

vim ~/.oh-my-zsh/plugins/git/git.plugin.zsh

也確定裡面已經有許多已設定好的 alias

但我在 terminal 上輸入該些 alias 仍然無法使用,會出現 command not found 的結果。


讓 alias 變成有效指令

後來再查一些資料,才注意到是 source 沒設定好,導致輸入 alias 時系統找不到源頭,當然就會得到 command not found 的結果。

想使用 alias 可以直接輸入 source ~/.oh-my-zsh/plugins/git/git.plugin.zsh,這樣做之後可讓輸入的 alias 變成有效指令,但如果關掉 terminal 再次開啟就又無法使用 alias 了,所以要直接到相關文件去加入這個 source,這樣每次開啟 terminal 的時候都可以直接使用 alias。

現在要修改的文件就是 ~/.zshrc,直接在 teminal 開啟文件編輯器修改

vim ~/.zshrc

然後在文件中加入

source ~/.oh-my-zsh/plugins/git/git.plugin.zsh

之後關掉 terminal 再重開就可以使用 zsh 內建的 alias 了。

==更正===

感謝網友 gqqnb2005 指正

git.plugin.zsh 是 plugin,要用启用 plugin 的方法令 alias 變成有效指令,而不是 source 单独的文件。 在.zshrc 里找到 plugins=(...) ,加入 git。

所以在 .zshrc 的 plugins 加入 git 即可,例如

plugins=( git ... )

常用的 alias

alias g='git' alias ga='git add' alias gb='git branch' alias gc='git commit -v' alias gca='git commit -v -a' alias gcam='git commit -a -m' alias gcb='git checkout -b' alias gcmsg='git commit -m' alias gco='git checkout' alias gd='git diff' alias gl='git pull' alias glog='git log --oneline --decorate --graph' alias gloga='git log --oneline --decorate --graph --all' alias gp='git push' alias gsb='git status -sb' alias gst='git status'
參考資料
如何以餐廳為例來了解網路基礎概念JavaScript - 為什麼 ES6 總是特別拿出來提?