我有这个命令做我想要的但我无法在我的.bashrc中对其进行别名(注意它使用单引号和双引号):
svn status | awk '$1 =="M"{print $2;}'
我试过了:
alias xx="svn status | awk '$1 ==\"M\"{print $2;}'"
还有其他一些没有运气的常识组合..我知道bash非常挑剔引号..所以什么是别名的正确方法,为什么?谢谢
你只需要正确地逃脱它。
alias xxx="svn status | awk '\$1 ==\"M\"{print \$2;}'"
这是在不使用别名的情况下完成同样的事情。将它放在.bashrc中的函数中:
xx() {
svn status | awk '$1 =="M"{print $2;}'
}
这样您就不必担心报价恰到好处。这使用与命令行完全相同的语法。
除了使用函数或逃避@ffledgling的方式之外,还有第三种方法(我发现更容易):使用字符串文字语法(here is an excellent answer)。
所以,例如,如果你不想制作this onliner的别名,它最终会成为:
alias snap-removedisabled=$'snap list --all | awk \'$5~"disabled"{print $1" --revision "$3}\' | xargs -rn3 snap remove'
所以你只需要在字符串前添加$
并转义单引号。