2013-11-21 5 views
35

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

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

Я пробовал:

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

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

ответ

45

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

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

Так что я не избежал $ .. не знал этого! –

+2

Ницца! Я не знал, что мне тоже нужно было сбежать от «$»! – Shadoninja

+0

Хороший ответ, но также напоминание о том, как легко совершать ошибки. В том случае, когда я работал, у меня были уже сбежавшие персонажи, и это создавало огромный беспорядок. Ответ EJK ниже был более полезен для меня, функция, вероятно, является более чистым вариантом для многих :) – jerclarke

45

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

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

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

+4

+1, но один вопрос - ключевое слово 'function' - бесполезная несовместимость с POSIX. Просто оставьте это: 'xx() {...' –

+4

Я этого не знал. Благодарю. – EJK

+1

Это проще, и мне это нравится, но другой ответил на вопрос более точно. –

Смежные вопросы