带有嵌套引号的Bash别名

时间:2019-06-15 17:31:43

标签: bash alias

如何为该命令设置别名? (因为它有多个引号)

rsync -azv -e 'ssh -o "ProxyCommand ssh -A some@place -W %h:%p"' user@xxx:/data/as ~/

2 个答案:

答案 0 :(得分:3)

只需使用单引号并将每个单引号替换为'\''

alias XYZ='rsync -azv -e '\''ssh -o "ProxyCommand ssh -A some@place -W %h:%p"'\'' user@xxx:/data/as ~/'

或者,使用函数代替别名

XYZ () {
    rsync -azv -e 'ssh -o "ProxyCommand ssh -A some@place -W %h:%p"' user@xxx:/data/as ~/ "$@"
}

它更灵活,使您以后可以参数化命令。

答案 1 :(得分:0)

转义内部的双引号,并用双引号将所有引号引起来,因为您不能转义单引号,而只能转义双引号。 (听起来有点可笑)

alias foobar="rsync -azv -e 'ssh -o \"ProxyCommand ssh -A some@place -W %h:%p\"' user@xxx:/data/as ~/"

您可能要检查this答案。