次のコマンドを実行できることを知っています。
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}
入力やそれに似たものが必要です。
答え1
bash
GNUなどを使用しているとします。
おそらくfor
サイクルですか?
for x in a b
do
run-command --a --whole --lot --of --flags parameter $x
done
一行で書くこともできます。 for x in a b; do run-command --a --whole --lot --of --flags parameter $x ; done
答え2
スクリプトを作成せずにコマンドラインから簡単に実行したい場合は、このxargs
コマンドが適している可能性があります。
xargsは標準入力から複数の項目を取得し、必要に応じて複数回実行できるコマンドの引数として使用します。
以下を試してください。
echo -n parameter a,parameter b | xargs -n 1 -d , run-command --a --whole --lot --of --flags
-n
末尾の改行印刷を防ぐために、Echoにフラグを付けます(引数を渡すときにいくつかのコマンドで問題が発生します)。
この例では、実行したい置換をxargsに提供するだけです。
この-n 1
フラグは、xargsが実行ごとに1つの引数のみを使用するように指示します。
この-d ,
フラグは、xargs に、実行される引数の間の区切り文字として入力で「,」を検索するように指示します。 (パラメータに「、」がある場合は別のものに変更する必要があります。パラメータにスペースがない場合は、このフラグを完全に省略できます。)
詳細についてはを参照してくださいman xargs
。
答え3
最後に、パラメータの変更を制限しない関数を使用することもできます。
runcom() { run-command --a --whole --lot --of --flags parameter "$1" ; }
runcom a
runcom b
答え4
alias
Bashには次のコマンドがあります。
$ alias shotcommand='run-command --a --whole --lot --of --flags parameter'
使用法は次のとおりです。$ shotcommand a