LinuCレベル1 101試験の例題と解説

1.03.3ストリーム、パイプ、リダイレクトの使用

LinuCレベル1 101試験の出題範囲から「1.03.3 ストリーム、パイプ、リダイレクトの使用」についての例題を解いてみます。
ここでは、xargsコマンドについて確認しておきましょう。

Linucレベル1 101試験 出題範囲


例題

xargsコマンドを利用して、以下の作業を行う。

  • dirディレクトリ配下にあるファイルだけをすべて削除(ディレクトリは削除しない)
  • 削除した実行コマンドも表示
  • dirディレクトリ配下の情報
$ ls -R dir
dir:
d1  d2  d3

dir/d1:
file1.txt

dir/d2:
file2.txt

dir/d3:
file3.txt

適切なコマンドを一つ選択してください。

  1. find dir -type f | xargs rm -f
  2. find dir -type f | xargs -c 'rm -f $0'
  3. find dir -type f | xargs -t rm -f
  4. find dir -type f | xargs -P rm -f

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「3.find dir -type f | xargs -t rm -f」です。

xargsコマンドは、あるコマンドの標準出力を標準入力から受け取り、次のコマンドに渡してくれます。

xargsコマンドの書式は以下の通りです。

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

xargsコマンドの主なオプションは以下の通りです。

オプション概要
-a [ファイル名]標準出力の代わりにファイルから読み込む
-0入力項目をNULLで区切って実行する
-d [区切り文字]入力項目の区切り文字を指定する
-E [終端文字]入力項目の終端文字を指定する
-tコマンドの実行内容を表示する
-n [引数の数]コマンドに渡す引数の数を指定する
-pコマンドの実行確認を行う
-P [実行プロセス数]複数プロセスを同時に立ち上げて実行する

選択肢の解説は以下です。

1.find dir -type f | xargs rm -f
不正解です。

xargsコマンドをオプションなしで実行した場合、コマンドの実行結果が出力されません。
実行例は、以下になります。

$ find dir -type f | xargs rm -f
$ ls -R dir
dir:
d1  d2  d3

dir/d1:

dir/d2:

dir/d3:

2.find dir -type f | xargs -c 'rm -f $0'
不正解です。

xargsコマンドに-cオプションは、存在しません。

3.find dir -type f | xargs -t rm -f
正解です。

xargsコマンドの-tオプションは、コマンドの実行内容を表示するオプションです。
実行例は、以下になります。

$ find dir -type f | xargs -t rm -f
rm -f dir/d3/file3.txt dir/d1/file1.txt dir/d2/file2.txt

xargsコマンドの実行内容は、標準エラー出力に表示されます。
リダイレクト等を活用することで別ファイルに出力も行えます。

4.find dir -type f | xargs -P rm -f
不正解です。

xargsコマンドの-Pオプションは、プロセスを同時に立ち上げて実行するオプションです。選択肢では、実行プロセス数を指定していないため書式エラーになります。

パイプやxargsコマンドを活用することで、複数実行していたコマンドを一つにまとめることが可能です。
状況に応じて、ワンライナーで実行し効率的に作業を行いましょう。


例題作成者

株式会社デージーネット OSS研究室 上野 貴博

ページトップへ