xargsはどのようなコマンドを実行できますか?

xargsはどのようなコマンドを実行できますか?

findutilsマニュアルから:

xargs [option...] [command [initial-arguments]]

異なるパラメータシーケンスを使用して複数回xargs実行するのは正しいですか?command

それでは、そのようなコマンドは、コマンドに適用される引数の順序が次のようになることを満たす必要があるという意味ですか?実際に

  • パラメータシーケンスをサブシーケンスに分割し、

  • 別の実行で各パラメータのサブシーケンスでコマンドを実行しますか?

mycommandたとえば、次のように実行できる場合はxargs正しいですか?

mycommand arg1 arg2 arg3

実際に関係があるはずです。

mycommand arg1
mycommand arg2 arg3

上記の条件が注文の実行に必要で十分ですかxargs

上記の条件を満たさない命令がありますか? (見つかりません。)もしそうなら、実行は可能ですかxargs

渡されるパラメータは、オプション、オプションパラメータ、またはオプション以外のパラメータなど、任意の種類のパラメータにxargsできますか?commandこの質問は上記の質問に答えるのに役立つと思います。

それでは-iどうなりますかxargs

ありがとうございます。

ベストアンサー1

xargsがそれぞれ異なる引数シーケンスを使用して複数回実行してコマンドを実行すると思うのは正しいですか?

xargsはい(もちろん入力が繰り返されない限り)

mycommand arg1 arg2 arg3

実際に関係があるはずです。

mycommand arg1
mycommand arg2 arg3

xargs一般に、私たちはリストがどこで分割されるのかわからないので、そうです。 GNU xargsを--show-limits使用すると、すべての入力が単一のコマンド実行に適しているかどうかを確認できます。

もちろん、パラメータをセットとしてコマンドに渡す必要がある場合窒素、私たちはそれをある程度制御するために使用することができます(または-n N-n M中サイズいくつかの排水窒素)。

上記の条件を満たさない命令がありますか? (見つかりません。) もしそうなら、xargsで実行できますか?

Kusalanandaは、mv最後のパラメータが他のパラメータとは異なる方法で処理されることが問題であると述べました。実際に追加されたパラメータはxargs途中で行く必要がありますが、これを行う標準的な方法はありません。 (FreeBSD xargsは-J {}これを行うことができ、GNUはオプションで引数リストの先頭にターゲットディレクトリを渡すmvことができます。)-t dircp

これにより、(作成)が実行されるたびにアーカイブが上書きされるため、このような操作はtar -czf foo.tar.gz機能しません。代わりに(append)を使用するとこれを-c回避できますが、少なくともGNU tarは圧縮アーカイブに追加することをサポートしていません。-r-c

幸いなことに、ほとんどのユーティリティはファイルごとに機能し、最後にファイルのリストを受け入れるように設計されています。

xargsコマンドに渡される引数は、オプション、オプション引数、または非オプション引数など、任意の種類の引数にできますか?

それらは単なる文字列であり、xargsそれが何を意味するのかわかりません。一般的なファイルのリストを許可しないが、同様の入力を取得する-f filenameオプションを使用するユーティリティがある場合は、それを喜んで渡します。サイズ制限は大きな入力にもかかわらず、aとファイル名を再分割する可能性がありますが、これを追加すると、これが発生する可能性が低くなります(ファイル名の長さと実際のサイズ制限によって異なります)。xargs-f file1 -f file2 ...-f-n 100

xargsの-iが関連付けられている場合はどうなりますか?

-iGNUでは、xargsはと同じで、やや退屈に、-I {}xargs入力引数に対してコマンドを一度実行します。コマンドの途中にパラメータを入れる必要がある場合は役立ちますが、コマンドの呼び出し回数を減らすのには役に立ちません。

おすすめ記事