/ dev / nullとは何ですか?その使用方法

What Is Dev Null How Use It



Linuxは、さまざまな目的でいくつかの仮想デバイスをホストする興味深いオペレーティングシステムです。システムで実行されているプログラムに関する限り、これらの仮想デバイスは実際のファイルであるかのように機能します。ツールは、これらのソースからデータを要求してフィードできます。データは、ディスクから読み取るのではなく、OSによって生成されます。

そのような例の1つは/ dev / nullです。これは、すべてのLinuxシステムに存在する特別なファイルです。ただし、他のほとんどの仮想ファイルとは異なり、読み取りではなく書き込みに使用されます。 / dev / nullに書き込んだものはすべて破棄され、voidに忘れられます。 UNIXシステムではnullデバイスとして知られています。







なぜあなたは何かを空虚に捨てたいのですか? / dev / nullとは何かとその使用法を確認しましょう。



前提条件

/ dev / nullの使用法を深く掘り下げる前に、 stdoutstderr データストリーム。これをチェックしてください の詳細なガイド stdinstderr 、 と stdout



さっとリフレッシュしましょう。コマンドラインユーティリティを実行すると、2つの出力が生成されます。出力はに行きます stdout エラー(生成された場合)は stderr 。デフォルトでは、これらのデータストリームは両方とも端末に関連付けられています。





たとえば、次のコマンドは、二重引用符で囲まれた文字列を出力します。ここで、出力はに保存されます stdout

$捨てたこんにちは世界



次のコマンドは、前に実行したコマンドの終了ステータスを表示します。

$捨てた $?

前のコマンドが正常に実行されたため、終了ステータスは0です。それ以外の場合、終了ステータスは異なります。無効なコマンドを実行しようとするとどうなりますか?

$ adfadsf
$捨てた $?

ここで、ファイル記述子について知る必要があります。 UNIXエコシステムでは、これらはファイルに割り当てられた整数値です。両方 stdout (ファイル記述子= 1)および stderr (ファイル記述子= 2)には特定のファイル記述子があります。ファイル記述子(この状況では1と2)を使用して、 stdoutstderr 他のファイルに。

手始めに、次の例はリダイレクトします stdout エコーコマンドのテキストファイルへの変換。ここでは、ファイル記述子を指定しませんでした。指定しない場合、bashはを使用します stdout デフォルトでは。

$捨てたこんにちは世界>>log.txt

次のコマンドは、 stderr テキストファイルに。

$asdfadsa2>>error.txt

/ dev / nullの使用

出力を/ dev / nullにリダイレクトする

これで、/ dev / nullの使用方法を学習する準備が整いました。まず、通常の出力とエラーをフィルタリングする方法を確認しましょう。次のコマンドで、grepは/ sysディレクトリで文字列(この場合はhello)を検索しようとします。

$グリップ -NSこんにちは/sys/

ただし、root権限がないと、grepは多数のファイルにアクセスできないため、多くのエラーが発生します。このような場合、権限拒否エラーが発生します。これで、リダイレクトを使用して、より明確な出力を取得できます。

$グリップ -NSこんにちは/sys/ 2>> /開発者/ヌル

出力はずっと良く見えますよね?何もない!この場合、grepは多くのファイルにアクセスできず、アクセス可能なファイルにはhelloという文字列がありません。

次の例では、Googleにpingを実行します。

$pingGoogle COM

ただし、これらすべての成功したping結果を確認する必要はありません。代わりに、pingがGoogleに到達できなかった場合のエラーにのみ焦点を当てたいと思います。どうすればいいですか?

$pingGoogle COM1>> /開発者/ヌル

ここでは、の内容 stdout / dev / nullにダンプされ、エラーのみが残ります。

すべての出力を/ dev / nullにリダイレクトします

特定の状況では、出力がまったく役に立たない場合があります。リダイレクトを使用して、すべての出力をvoidにダンプできます。

$グリップ -NSこんにちは/sys/ >> /開発者/ヌル2>&1

このコマンドを少し中断してみましょう。まず、すべてをダンプします stdout / dev / nullに。次に、第2部では、bashに送信するように指示します stderrstdout 。この例では、出力するものは何もありません。ただし、混乱している場合は、コマンドが正常に実行されたかどうかをいつでも確認できます。

$捨てた $?

コマンドが多くのエラーを生成したため、値は2です。

のファイル記述子を忘れがちな場合 stdoutstderr 、次のコマンドで問題ありません。これは、前のコマンドのより一般化された形式です。両方 stdoutstderr / dev / nullにリダイレクトされます。

$グリップ -NSこんにちは/sys/ &> /開発者/ヌル

その他の例

これは面白いものです。 ddツールを覚えていますか?これは、ファイルを変換およびコピーするための強力なツールです。 ddの詳細をご覧ください。 ddを使用して、ディスクのシーケンシャル読み取り速度をテストできます。もちろん、それは正確な測定ではありません。ただし、簡単なテストには非常に便利です。

$dd もしも=<big_file>> =/開発者/ヌル状態=進捗状況bs= 1Miflag=直接

ここでは、Ubuntu 18.04.4ISOを大きなファイルとして使用しました。

同様に、インターネット接続のダウンロード速度をテストすることもできます。

$wget -また /開発者/ヌル<big_file_link>>

最終的な考え

うまくいけば、この/ dev / nullファイルが何であるかを明確に理解しているはずです。これは、書き込まれると破棄され、読み取られるとnullを読み取る特別なデバイスです。この興味深い機能の真の可能性は、興味深いbashスクリプトにあります。

bashスクリプトに興味がありますか?チェックアウト bashスクリプトの初心者向けガイド

楽しみ!