Ответ 1
Вам просто нужно избежать этого.
alias xxx="svn status | awk '\$1 ==\"M\"{print \$2;}'"
У меня есть эта команда, которая делает то, что я хочу, но я не могу получить псевдоним в моем .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: использование строкового литерального синтаксиса (здесь отличный ответ).
Так, например, если вы не хотите делать псевдоним этого onliner, он в конечном итоге будет:
alias snap-removedisabled=$'snap list --all | awk \'$5~"disabled"{print $1" --revision "$3}\' | xargs -rn3 snap remove'