xargs【コマンド】
コマンドだよ
UNIX系で使えるよ
引数を標準入力から与えるよ
スポンサーリンク
簡単に書くよ
xargs【コマンド】とは
コンピュータさんに対する命令文(コマンド)のひとつ
であり
引数
(プログラムや関数に入れる値)を標準入力から与えるときに使うコマンド
です。
詳しく書くよ
「xargs」コマンドは
標準入力から引数を取得するときに使うコマンド
です。
UNIX系(LinuxとかMacとか)で使えます。
書き方は
xargs [オプション] [コマンド[引数]]
です。
オプションは、あれやこれやとあります。
| オプション | 説明 |
|---|---|
| -a 【ファイル名】 | 標準入力ではなく【ファイル名】から読み込む |
| -0 | ヌル文字で区切る |
| -d【デリミタ】 | 【デリミタ】で区切る |
| -E【文字列】 | 【文字列】をファイル終端文字として設定する。【文字列】が登場したら、それ以降の入力は無視する。 |
| -I【文字列】 | [引数]の中の【文字列】を標準入力から読み込んだものに置き換える |
| -L【数字】 | 1コマンドに最大【数字】行読み込む。読み込み行数が【数字】行に達する度にコマンドを実行するよ |
| -n【数字】 | 最大【数字】個の引数を取る。引数が【数字】個に達する度にコマンドを実行するよ |
| -p | 1行ごとに「実行する?」って確認してくる |
| -r | 標準入力に空白しか含まれていない場合は、指定したコマンドを実行しない。 |
| -s【数字】 | 1つの[コマンド[引数]]につき最大【数字】文字使う |
| -t | 実行する内容を標準エラー出力に出力する |
| -x | [コマンド[引数]]の長さが上限を超えていたら終了する(-sオプション参照) |
| -P【数字】 | 最大【数字】個のプロセスを同時実行する |
などです。
オプションは複数組み合わせて指定できます。
例えば
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」コマンドは慣れるまでが大変ですが、慣れるとかなり便利です。
気が向いたら、いろいろ試してあげてください。
一言でまとめるよ
まぁ「xargs」ってコマンドが出てきたら「引数
(プログラムや関数に入れる値)を標準入力から与えるときに使うんだな~」と お考えください。
おまけ
■訳してみるよ
「x」は何でしょうね。
単なるアルファベットの「X」でしょうか。
「args」は多分「arguments(アーギュメンツ)」の略です。
「arguments(アーギュメンツ)」は「argument(アーギュメント)」+複数形にする「s」です。
「argument(アーギュメント)」の意味は「引数(ヒキスウ)」とかです。
■検索してみる?






