今日の人気記事

  1. chown - ファイルの所有者やグループを変更 - Linuxコマンド
  2. ssh - リモートマシンにSSHでログイン - Linuxコマンド
  3. 公開鍵認証によるSSH接続 - Tera Termの使い方
  4. ファイルの解凍・圧縮 - Linuxコマンド一覧(.zip .gz .Z .bz2 tar.gz .tgz tar.Z .taz .tar.bz2 .tbz2)
  5. tar - アーカイブの作成・展開 - Linuxコマンド

xargs - 標準入力からコマンドラインを作成し、それを実行 - Linuxコマンド

スポンサーリンク

xargsコマンドは、標準入力からコマンドラインを作成し、それを実行するコマンドです。

xargsコマンド

書式

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

xargsコマンドは、長い引数リストを渡す場合に便利なコマンドです。

スペース・タブ・改行で区切られた文字列を標準入力から読み込み、1行ずつコマンドに引数として渡して、そのコマンドを実行します。

オプション

-p指定したコマンドを実行する際に問い合わせます。コマンドを実行する場合は'y'あるいは'Y'を入力します。
-r標準入力に空白しかない場合は、コマンドを実行しません。
-t実行するコマンドを標準エラー出力に表示します。

使用例

Linuxコマンドの引数には制限があり、長すぎる引数リストを渡すと以下のようにエラーが表示され、適切にコマンドを実行できません。

$ rm *
-bash: /bin/rm: 引数リストが長すぎます

このような場合、xargsコマンドを利用すれば、適切にコマンドを実行することができます。

$ ls | xargs rm

こうするとこで、(1度にrmコマンド実行するのではなく)複数のrmコマンドを実行することになるので、引数の上限を回避し、適切のコマンドを実行することができます。

長すぎる引数リストを作成し、xargsコマンドをテストしてみたい方は、以下のBASHスクリプトを利用してください。実行すると500000個の空ファイルを作成します。作成するファイルの数は適当に調節してください。

#!/bin/bash
i=0
while [ $i -lt 500000 ]
do
  touch file-$i
  let i=$i+1
done

指定したコマンドを実行する際に問い合わせます(オプション -p)。

$ ls
file-0 file-1
$ ls | xargs -p rm
rm file-0 file-1 ?...

実行するコマンドを標準エラー出力に表示します(オプション -t)。

$ ls
file-0 file-1
$ ls | xargs -p rm
rm file-0 file-1

関連記事(一部広告含む)