Является ли «xargs -p» в Unix / Bash хорошим способом запроса подтверждения перед выполнением какой-либо команды? - PullRequest
4 голосов
/ 04 августа 2010

Я спросил, как сделать любую команду «спросить да / нет перед выполнением» в вопросе

В Bash, как добавить «Вы уверены [Да / Нет]» в любойкоманда или псевдоним?

Кажется, что для команды

hg push ssh://username@www.example.com//somepath/morepath

Я также могу сделать это

echo ssh://username@www.example.com//somepath/morepath | xargs -p hg push

-p это тот, которыйделает трюк.Это будет установлен как псевдоним, такой как hgpushrepo.Это хороший способ, какие-нибудь подводные камни или лучшие альтернативы?Я надеялся использовать что-то, что является стандартным Unix / Bash, вместо того, чтобы писать скрипт для этого.

Ответы [ 3 ]

3 голосов
/ 04 августа 2010

Недостатком использования псевдонима является то, что он не принимает параметры. Если вы хотите обобщить эту команду hg, чтобы использовать ее с любым именем пользователя, именем хоста или путем, вам нужно будет использовать скрипт или функцию.

Кстати, использование скрипта - это"стандартный Unix / Bash". Простой скрипт или функция так же легок (проще, на самом деле, из-за повышенной мощности и универсальности), как псевдоним. Псевдонимы полезны для очень коротких, чрезвычайно простых командных ярлыков. Часто они используются для включения опции по умолчанию (например, alias ls='ls --color=auto').

Для неизменяемых команд, которые вы часто используете и не нуждаетесь в аргументах (кроме тех, которые могут быть добавлены в конце), псевдонимы вполне подходят. И нет ничего плохого в том, чтобы использовать xargs так, как вы показываете. Это немного излишне и это ненужный вызов внешнего исполняемого файла, но это не должно быть значительным в этом случае.

1 голос
/ 23 августа 2010

xargs имеет неприятную тенденцию приводить к неприятным сюрпризам из-за проблемы с разделителем https://en.wikipedia.org/wiki/Xargs#Separator_problem

GNU Parallel http://www.gnu.org/software/parallel/ не имеет этой проблемы и, следовательно, может быть безопаснее.

seq 10 | parallel -p echo

Смотрите вступительное видео для GNU Parallel: http://www.youtube.com/watch?v=OpaiGYxkSuQ

0 голосов
/ 18 сентября 2017

Иногда я использую такие обертки для настройки команд.

ls () { command ls -F "$@"; }

Определяет функцию, заключающую в себе оригинальную команду, и сохраняет переменную PATH.

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