Tech Bytes

短くて分かりやすい技術情報を記事として共有します。みなさんにとって学びになれば幸いです。

findコマンドで標準エラーを捨てる方法

findコマンドで、標準エラーを捨てて、欲しい結果(標準出力)だけを得るためには何をつける?

2> /dev/nullを後ろに付ける。
例)

find / -name AAA 2> /dev/null

/dev/nullは渡されたものを無にすることができます。
2>とすると、標準エラーを渡すことができるため、これを/dev/nullによって打ち消すことができるわけです。

なぜ/dev/nullで標準エラーを打ち消すことができるのか

/dev/nullは、UnixおよびUnix系オペレーティングシステムで使用される特別なファイルです。
このファイルにデータを書き込むと、それが永久に消去され、読み取りを行っても常に空の結果が得られます。

標準エラー(stderr)を/dev/nullにリダイレクトすると、エラーメッセージが単に破棄され、出力として表示されることはありません。
これは、デバッグやログ出力など、エラーメッセージを無視して良い場合に便利です。
例えば、プログラムが期待どおりに機能しているが、標準エラーには特定のメッセージが表示されるのを避けたい場合などです。

/dev/nullを使用しない場合の具体的な標準エラーの例

例えば、ファイルをコピーする際に、コピー元のファイルが存在しない場合に発生するエラーです。

$ cp non_existent_file.txt destination_directory/
cp: cannot stat 'non_existent_file.txt': No such file or directory

このエラーメッセージは、"non_existent_file.txt" というファイルが見つからないことを示しています。
/dev/nullを使用しない場合、このようなエラーメッセージが標準エラーに表示され、ユーザーに通知されます。