Bash псевдоним команды svn, переданной в awk - PullRequest
2 голосов
/ 02 декабря 2009

Я часто набираю эту команду, пытался ее псевдоним и по какой-то причине не смог.

for FILE in `svn stat | awk '{print $2}'`; do svn revert $FILE; done

Это, очевидно, делает большое количество SVN возвратов.

когда я псевдоним это:

alias revert_all="for FILE in `svn stat | awk '{print $2}'`; do svn revert $FILE; done"

svn stat запускается сразу - ничего хорошего

Затем я пытаюсь заключить в кавычки часть awk:

alias revert_all='for FILE in `svn stat | awk "{print $2}"`; do svn revert $FILE; done'

но это не работает должным образом - часть awk не выполняется (я получаю значения M и пытаюсь запустить svn revert M).

следующая попытка с кавычками в одиночку:

alias revert_all='for FILE in `svn stat | awk \'{print $2}\'`; do svn revert $FILE; done'

Команда не завершена, bash ожидает еще один тик?

Я знаю, что мог бы написать это или добавить команду awk в файл, но я не ищу обходной путь. Здесь есть кое-что, чего я не знаю. Что это?

TIA

Ответы [ 5 ]

3 голосов
/ 02 декабря 2009

Я не вы не интересны в обходных путях, но, кажется, как родной путь. Не псевдоним, но определить как функцию и поставить .bashrc:

revert_all() { for FILE in `svn stat | awk '{print $2}'`; do svn revert $FILE; done}

Только что протестировано:

alias revert_all="for FILE in \`svn stat | awk '{print $2}'\`; do svn revert $FILE; done"

работает.

2 голосов
/ 03 декабря 2009

почему вы хотите использовать псевдоним? определите его как функцию и поместите в файл. Это будет действовать как «библиотека». Если вы хотите использовать функцию, используйте ее в своих скриптах.

2 голосов
/ 02 декабря 2009

Разве вы не можете просто сделать svn revert --recursive?

1 голос
/ 02 декабря 2009

С помощью обратных кавычек очень трудно получить правильное цитирование.

Попробуйте это:

alias revert_all='for FILE in $(svn stat | awk '{print $2}'); do svn revert "$FILE"; done'

Использование $() позволяет кавычкам внутри него быть независимым от кавычек вне него.

Лучше всегда использовать $() и , никогда не использовать обратные метки .

1 голос
/ 02 декабря 2009

Самый простой способ - полностью избежать обратных кавычек с помощью:

svn stat | awk '{print $2}' | while read FILE; do svn revert $FILE; done

Далее следует использовать eval.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...