Bash

如何為 git 創建別名一個ction一種C噸一世○naction命令(包括空格)?

  • April 10, 2018

我的大多數別名都是這種形式:alias p='pwd'

我想給git commit它起別名git commit -v

但是嘗試使用空格創建別名會出錯:

$ alias 'git commit'='git commit -v'
-bash: alias: `git commit': invalid alias name

不是您問題的直接答案(因為別名只能是一個詞),但您應該git-config改用:

git config --global alias.civ commit -v

這將創建一個 git 別名,以便git civ執行git commit -v. 不幸的是,AFAIK沒有辦法用 aliases 覆蓋現有的 git 命令。但是,您始終可以選擇一個合適的別名作為替代。

你說的是一個包含空格的命令,但這裡是命令git,那裡沒有空格。

要呼叫git commit命令,您需要編寫它

git\ commit ...
'git commit' ...
"git commit" ...

通常命令的名稱中沒有空格,因為在 shell 中呼叫它們很麻煩,所以我認為你不會在系統上找到這樣的命令。

csh、tcsh 或 zsh 將允許您為上述任何一個別名,但不能為 bash 或 ksh(雖然 pdksh 允許但您不會讓您使用它們)。在 zsh 中:

alias "'git commit'=git commit -v"
'git commit' ...

將使git command命令(僅當呼叫'git command'(使用單引號)時)成為帶有和參數的git命令的別名。我猜不是你要找的東西。commit``-v

因為aliascan only alias commands,所以你可以在這裡給git命令加上別名,並且你需要將它的別名為在其參數列表中的“commit”之後插入“-v”的東西。最好是使用@jw013 的解決方案,但如果由於某種原因你不能或不會,而不是使用別名,你可以使用一個函式來完成這項工作:

git() {
 if [ "$1" = commit ]; then
   shift
   set -- commit -v "$@"
 fi
 command git "$@"
}

引用自:https://unix.stackexchange.com/questions/48862