xargs エックスアーグス

英語表記xargs

日本語表記標準入力の引数化実行

正式名称xargs

危険度注意

What does it mean?

標準入力の項目をまとめてコマンド引数へ変換し、後続コマンドを実行します。大量ファイル処理やパイプ連携で有用ですが、区切りの扱いが重要です。

Command Quest

xargs を今日の道具にする

標準入力の項目をまとめてコマンド引数へ変換し、後続コマンドを...

$ xargs [オプション]... [コマンド [初期引数...]]
関連用語2
次のコマンド0
FAQ1
参照3

概要

標準入力の項目をまとめてコマンド引数へ変換し、後続コマンドを実行します。大量ファイル処理やパイプ連携で有用ですが、区切りの扱いが重要です。

基本構文

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

詳細解説

xargsは、標準入力から受け取った項目を引数として組み立て、別のコマンドを実行する道具です。find結果や一覧出力を、rm、grep、chmodなどの引数へ渡す時に使います。

利点は、大量項目を効率よくまとめて処理できることです。一方で、空白や改行を含む名前に弱い既定動作には注意が必要です。安全性を重視するなら、find -print0とxargs -0の組み合わせを基本形として覚えるべきです。

また、破壊的コマンドと組み合わせる時は特に注意が必要です。まずechoやprintfを使って、実際にどの引数が組み立てられるか確認してから本番実行へ進むのが安全です。

このコマンドを使う場面

一覧出力を別コマンドの引数へ渡したい時、大量項目をまとめて処理したい時に使います。

まず安全に試す方法

1. printf 'anbn' | xargs echo
2. find . -maxdepth 1 -type f -print0 | xargs -0 echo

3分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. printfの出力をxargs echoへ渡し、引数列になることを確認します。

資格試験との関連

  • LinuC レベル1
    範囲: 1.03.3 ストリーム、パイプ、リダイレクトの使用
    根拠: official
    xargsは、パイプラインを組み立てて出力を流す技能と密接に関わります。
  • LPIC-1
    範囲: 103.4 ストリーム、パイプ、リダイレクトの使用
    根拠: official
    xargsは、標準入力と標準出力を使って複数コマンドを連携させる技能と関係します。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    xargsは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。

オプション

  • -0
    ヌル終端入力を受け取り、安全に項目を解釈します。
    find . -print0 | xargs -0 rm
  • -n 個数
    1回の実行に渡す引数数を制限します。
    xargs -n 1 echo
  • -I 置換文字列
    入力項目を指定位置へ埋め込んで実行します。
    xargs -I{} echo file:{}

実行結果サンプル

  • printf 'anbn' | xargs echo
    a b

戻り値コード

  • 0 正常終了。後続コマンドの実行に成功しました。
  • >0 入力解釈や後続コマンド実行で問題がありました。

使用例

  • printf 'anbn' | xargs echo
  • find . -type f -print0 | xargs -0 grep ERROR
  • find . -name '*.tmp' -print0 | xargs -0 rm

よくあるエラー

  • 空白を含むファイル名で誤動作した
    原因: 既定区切りで分割されました。
    対処: find -print0とxargs -0を使います。
  • 一気に削除してしまった
    原因: 実行前の確認を省きました。
    対処: まずxargs echoで引数の形を確認してから本番コマンドへ差し替えます。

導入・互換性情報

POSIXで基本機能は標準化されています。-0は広く普及していますが、ヌル終端連携を前提に書くなら対象環境で確認してください。

注意点 / セキュリティリスク

危険度は中程度です。空白や改行を含む名前を誤分割すると、意図しない対象へコマンドが実行されます。破壊的処理では必ず-print0と-0を検討してください。

FAQ

  • Q. find -execとの違いは何ですか。
    A. xargsは大量引数を効率よくまとめやすく、find -execは区切り安全性を保ちやすいです。用途で選びます。

関連用語

  • 標準入力
  • パイプ

参照リンク

関連記事