Подтвердить что ты не робот

Bash команда alias с одиночными и двойными кавычками

У меня есть эта команда, которая делает то, что я хочу, но я не могу получить псевдоним в моем .bashrc(обратите внимание, что он использует одиночные и двойные кавычки):

svn status | awk '$1 =="M"{print $2;}'

Я пробовал:

alias xx="svn status | awk '$1 ==\"M\"{print $2;}'"

И некоторые другие комбинации здравого смысла без везения. Я знаю, что bash очень разборчивы с кавычками. Итак, какой правильный способ псевдонима и почему? Благодаря

4b9b3361

Ответ 1

Вам просто нужно избежать этого.

alias xxx="svn status | awk '\$1 ==\"M\"{print \$2;}'"

Ответ 2

Здесь что-то, что выполняет одно и то же, не используя псевдоним. Поместите его в функцию в .bashrc:

xx() {
    svn status | awk '$1 =="M"{print $2;}'
}

Таким образом, вам не нужно беспокоиться о том, чтобы получить котировки в самый раз. Это использует тот же синтаксис, который вы бы указали в командной строке.

Ответ 3

Существует третий способ, помимо использования функции или обхода пути, который сделал @ffledgling: использование строкового литерального синтаксиса (здесь отличный ответ).

Так, например, если вы не хотите делать псевдоним этого onliner, он в конечном итоге будет:

alias snap-removedisabled=$'snap list --all | awk \'$5~"disabled"{print $1" --revision "$3}\' | xargs -rn3 snap remove'