JRL*_*ert 2 osx shell terminal
git branch -r | awk '{print $1}'
输入终端产生:
origin/HEAD
origin/master
Run Code Online (Sandbox Code Playgroud)
而alias test1="git branch -r | awk '{print $1}'"
在.bash_profile
产量方面:
origin/HEAD -> origin/master
origin/master
Run Code Online (Sandbox Code Playgroud)
为什么awk '{print $1}'
在.bash_profile
?
定义别名:
$ alias test1="git branch -r | awk '{print $1}'"
Run Code Online (Sandbox Code Playgroud)
然后看它的定义:
$ alias test1
alias test1='git branch -r | awk '\''{print }'\'''
Run Code Online (Sandbox Code Playgroud)
怎么$1
不见了?那是因为您的别名定义在双引号中。这意味着 shell 扩展了$1
定义别名的字符串中的变量。它的值为空。
在别名定义周围使用单引号,转义$
,或编写适当的函数:
test1 () {
git branch -r | awk '{ print $1 }'
}
Run Code Online (Sandbox Code Playgroud)
一个好的经验法则可能是这样的:如果您的别名比单个命令更复杂(并且需要特殊引用等),那么将其编写为 shell 函数。