Shell
命令在 bash_profile 與終端中的作用不同
git branch -r | awk '{print $1}'
輸入終端產生:origin/HEAD origin/master
在
alias test1="git branch -r | awk '{print $1}'"
產量時.bash_profile
:origin/HEAD -> origin/master origin/master
為什麼
awk '{print $1}'
在中被忽略.bash_profile
?
定義別名:
$ alias test1="git branch -r | awk '{print $1}'"
然後看它的定義:
$ alias test1 alias test1='git branch -r | awk '\''{print }'\'''
看看怎麼
$1
消失的?那是因為您的別名定義是用雙引號引起來的。這意味著 shell 擴展了$1
定義別名的字元串中的變數。它的值為空。在別名定義周圍使用單引號,轉義
$
,或編寫適當的函式:test1 () { git branch -r | awk '{ print $1 }' }
一個好的經驗法則可能是:如果您的別名比單個命令更複雜(並且需要特殊引用等),則將其編寫為 shell 函式。