Я знаю, что могу запустить следующую команду
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}
или что-то подобное.
shell
command-line
scripting
ashays
источник
источник
run-command
, многие команды Unix обрабатывают несколько файловых аргументов последовательно.Ответы:
Предполагая, что вы используете GNU
bash
или что-то подобное:Возможно
for
петля?который также может быть записан в одну строку как
for x in a b; do run-command --a --whole --lot --of --flags parameter $x ; done
источник
for x in {a..z}; do ; run-command --a --whole --lot --of --flags parameter $x ; done
{a..z}
,*.pdf
,$(find ...)
...;
следующегоdo
ключевого слова.;
.Если вы не пишете сценарий и просто хотите запустить его из командной строки, то,
xargs
вероятно, вам нужна команда.xargs будет извлекать кучу содержимого из стандартного ввода и использовать его в качестве аргументов для команды, выполняя эту команду несколько раз, если это необходимо.
Попробуйте следующее:
В этом примере вы просто даете xargs перестановки, которые вы хотите запустить.
Флаг "-n 1" указывает xargs использовать только 1 аргумент за запуск.
Флаг «-d,» указывает xargs искать «,» на входе в качестве разделителя между аргументами для запуска. (Обратите внимание, что если в аргументе есть «,», вам нужно изменить его на что-то другое. Если в ваших аргументах нет пробелов, вы можете вообще пропустить этот флаг.)
Смотрите
man xargs
для получения дополнительной информации.источник
Вы также можете использовать функцию, которая не ограничивает вас изменением аргумента в конце:
источник
Вы можете выполнить замены в предыдущей команде. Это не будет работать с вашим примером {a, b}, потому что все экземпляры 'a' будут заменены на 'b'. Но представьте, что вы хотите выполнить следующие команды:
Вы можете сделать это с
Баш сделает замену и запустит
Используйте gs (глобальное замещение) для выполнения нескольких подстановок, а не только одного.
источник
В
alias
bash есть команда:Использование:
$ shotcommand a
источник