Linuxでは、プログラムはコマンドラインを使用して非常に一般的にアクセスされ、出力自体が端末画面に表示されます。出力は2つの部分で構成されています: STDOUT (標準出力 )、情報ログと成功メッセージ、および STDERR が含まれています (標準エラー )、エラーメッセージが含まれています。
多くの場合、出力には、関連性がなく、システムリソースを不必要に利用する多くの情報が含まれています。特に複雑な自動化スクリプトの場合、次々に実行されているプログラムがたくさんあると、表示されるログは膨大になります。
このような場合、疑似デバイスを利用できます。 ファイル‘ / dev / null ‘出力をリダイレクトします。出力が/dev / nullにリダイレクトされるとき 、すぐに破棄されるため、リソースの使用は行われません。
出力を/dev / nullにリダイレクトする方法を見てみましょう Linuxの場合。
2つのファイルを特定のディレクトリに移動しようとするmvコマンドの例を見てみましょう。ここでは、1つのファイルが正常に移動されます( STDOUT が表示されます)。 )およびもう一方は移動中にエラーを出します( STDERR を表示します) 。
$ mv -v tmp.c /etc/apt/sources.list /tmp
<強い色:赤;">注 :'-v'
mvへの引数 ファイルが移動されたときに成功ログを表示します。フラグがないと、 STDOUTには何も出力されません。 。
ここで、 STDOUTのみをリダイレクトします / dev / nullへ 、つまり、標準出力を破棄するには、次を使用します。
$ mv -v tmp.c /etc/apt/sources.list /tmp 1>/dev/null
「1>/dev / null」とはどういう意味ですか?
ここで'1'
STDOUTを示します 、これはLinuxによって同じものに割り当てられた標準の整数です。演算子'>'
、リダイレクト演算子と呼ばれ、データをファイルに書き込みます。この場合に指定されたファイルは/dev / null 。したがって、データは最終的に破棄されます。
/ dev / nullの代わりに他のファイルが指定された場合 、標準出力はそのファイルに書き込まれます。
同様に、 STDERRのみをリダイレクトするには / dev / nullへ 、整数'2'
を使用します '1'
の代わりに 。整数'2'
標準エラーを表します。
$ mv -v tmp.c /etc/apt/sources.list /tmp 2>/dev/null
ご覧のとおり、標準エラーは / dev / null で破棄されるため、端末には表示されません。 。
最後に、両方の STDOUTを破棄します およびSTDERR 同時に、以下を使用します:
$ mv -v tmp.c /etc/apt/sources.list /tmp &>/dev/null
アンパサンド文字('&')
標準出力と標準エラーの両方を/dev / nullにリダイレクトする必要があることを示します と破棄されます。したがって、最後のスクリーンショットでは、画面に出力がまったく印刷されていません。
結論
この記事では、出力を / dev / nullにリダイレクトする方法を見てきました。 。これは、コマンドまたは大量のログを生成する複雑なBashスクリプトのいずれかで使用できます。スクリプトのデバッグが必要な場合、またはテストする必要がある場合。このような場合、エラーを適切に表示および分析するためにログが必要です。
ただし、出力がすでにわかっていて予想される場合は、 / dev / nullを使用して破棄できます。 。ご質問やご意見がございましたら、下のコメント欄でお知らせください!