Повторная команда с другим параметром

Я знаю, что могу выполнить следующую команду

ls Some{File,Folder} 

И это эквивалентно запуску этого:

 ls SomeFile SomeFolder 

(Я также использую его много для вещей, таких как mv place_{a,b} )

Тем не менее, мне было интересно, есть ли другой ярлык, где я мог бы сделать что-то вроде этого:

 run-command --a --whole --lot --of --flags parameter a; \ run-command --a --whole --lot --of --flags parameter b 

И мне приходилось вводить run-command --a --whole --lot --of --flags parameter {a,b} или что-то подобное.

5 Solutions collect form web for “Повторная команда с другим параметром”

Предполагая, что вы используете GNU bash или что-то подобное:

Возможно, цикл for ?

 for x in ab do run-command --a --whole --lot --of --flags parameter $x done 

который также может быть записан в одну строку как for x in ab; do run-command --a --whole --lot --of --flags parameter $x ; done for x in ab; do run-command --a --whole --lot --of --flags parameter $x ; done

Вы также можете использовать функцию, которая не ограничивает вас наличием изменяющегося аргумента в конце:

 runcom() { run-command --a --whole --lot --of --flags parameter "$1" ; } runcom a runcom b 

Если вы не создаете сценарий и просто хотите легко запустить его в командной строке, команда xargs вероятно, вы ищете.

xargs возьмет кучу контента со стандартного ввода и использует его в качестве аргументов для команды, при необходимости используя эту команду несколько раз.

Попробуйте следующее:

 echo parameter a,parameter b | xargs -n 1 -d , run-command --a --whole --lot --of --flags 

В этом примере вы просто даете xargs перестановки, которые вы хотите запустить.

Флаг «-n 1» указывает, что xargs использует только 1 аргумента за прогон.

Флаг «-d» указывает xargs искать «,» на входе в качестве разделителя между аргументами для запуска. (Обратите внимание, что если аргумент имеет «,» в нем, вам нужно будет изменить это на что-то другое. Если в ваших аргументах нет пробелов, вы можете вообще опустить этот флаг.)

См. man xargs для получения дополнительной информации.

В bash есть команда alias :

 $ alias shotcommand='run-command --a --whole --lot --of --flags parameter' 

Используется: $ shotcommand a

Вы можете выполнять замены в предыдущей команде. Это не будет работать с вашим примером {a, b}, потому что все экземпляры 'a' будут заменены на 'b'. Но представьте, что вы хотите выполнить следующие команды:

 run-command --a --whole --lot --of --parameter --format xml run-command --a --whole --lot --of --parameter --format son 

Вы можете сделать это с помощью

 run-command --a --whole --lot --of --parameter --format xml !!:s/xml/json/ 

Баш выполнит замену и запустит

 run-command --a --whole --lot --of --parameter --format json 

Используйте gs (глобальная замена) для выполнения нескольких подстановок, а не только один.

  • Выполнить схему однострочного интерфейса из командной строки
  • Добавьте 10 к значению в большом XML-файле
  • Скрипты для размещения домена на сервере
  • Сравнение двух столбцов с двумя столбцами
  • Удалить строки, содержащие одну и ту же информацию, но в другом порядке
  • Сценарии соглашений KSH
  • сокращение для пар ключ-значение
  • Повторять команду Unix каждые x секунд навсегда
  • bash scripts - удалять повторяющиеся строки с меньшим значением
  • Какую платформу можно использовать для программного редактирования текстовых файлов?
  • Справка по скрипту для обработки файла txt в CSV
  • Linux и Unix - лучшая ОС в мире.