[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

xargs【コマンド】

pointこの用語のポイント

pointUNIX系で使えるコマンドだよ

point引数を標準入力から与えるよ

スポンサーリンク

簡単に書くよ

xargs【コマンド】とは

引数を標準入力から与えるときに使うコマンド
です。

image piyo

詳しく書くよ

UNIX系(LinuxとかMacとか)で使えます。

書き方は

xargs [オプション] [コマンド[引数]]

です。
オプションはあれやこれやとあります。

オプション説明
-a 【ファイル名】標準入力ではなく【ファイル名】から読み込む
-0ヌル文字で区切る
-d【デリミタ【デリミタ】で区切る
-E【文字列】【文字列】をファイル終端文字として設定する。【文字列】が登場したら、それ以降の入力は無視する。
-I【文字列】[引数]の中の【文字列】を標準入力から読み込んだものに置き換える
-L【数字】1コマンドに最大【数字】行読み込む。読み込み行数が【数字】行に達する度にコマンドを実行するよ
-n【数字】最大【数字】個の引数を取る。引数が【数字】個に達する度にコマンドを実行するよ
-p1行ごとに「実行する?」って確認してくる
-r標準入力に空白しか含まれていない場合は、指定したコマンドを実行しない。
-s【数字】1つの[コマンド[引数]]につき最大【数字】文字使用する
-t実行する内容を標準エラー出力に出力する
-x[コマンド[引数]]の長さが上限を超えていたら終了する(-sオプション参照)
-P【数字】最大【数字】個のプロセスを同時実行する


などですね。
オプションは複数組み合わせて指定できます。

「xargs」コマンドは標準入力から引数を取得する場合に取得します。
……と言われてもよく分からないですかね。

例えば

xargs ls

と打ちます。
そうすると入力待ち状態になりますので「hoge.txt」と入力して「Ctrlキー」+「d」を押します。

この実行結果が

ls hoge.txt

と同じになるのです。
「ls」コマンドの引数を標準入力から受け取った形です。

「xargs」の使い所はいろいろありますが、単独で使われることはまずありません。
例えば

more list.txt |xargs more

のように他のコマンドと組み合わせて使います。
この例では「list.txt」の中にファイル名の一覧が記載されているのですが、そのリストに記載されているファイルの中身を表示しますよ。

more list.txt

の結果が例えば

aaa.txt
bbb.txt
ccc.txt


になるとして「|xargs more」の部分で「more」コマンドの引数として上記結果が与えられます。つまり

more aaa.txt
more bbb.txt
more ccc.txt

を同時に実行したのと同じ扱いになるのです。
使いこなせば便利そうなコマンドですね。

あっ、そうそう。
ついでなんで「-I」オプションの解説もしておきますね。
よく分からないけど分かれば便利、それが「-I」オプションです。

「-I」オプションは「指定文字列を標準入力から読み込んだものに置き換える」オプションですが、言葉で聞いてもよく分からないかもしれません。
実際に例を挙げると、例えばこんな感じの使い方をします。

more list.txt |xargs -Irs cp rs hoge_dir/

「-Irs」の「rs」が指定文字列です。
その後ろに「cp rs hoge_dir/」があると思いますが、この「cp rs hoge_dir/」の「rs」を標準入力から読み込んだもの、list.txtの中身に置き換えますよ~ということです。
このコマンドを実行するとlist.txtの中に記載のあるファイルをすべてhoge_dir/の中にコピーしてくれますよ。

cp aaa.txt hoge_dir/
cp bbb.txt hoge_dir/
cp ccc.txt hoge_dir/

を同時に実行したのと同じ扱いです。

「xargs」コマンドは慣れるまでが大変ですが、慣れるとかなり便利なコマンドです。
気が向いたらいろいろ試してあげてください。

image piyo2

一言でまとめるよ

まぁ「xargs」ってコマンドが出てきたら「引数を標準入力から与えるときに使うんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク