「/dev/zero」と「/dev/null」は、空のファイルを作成するのに役立つ 2 つのダミー デバイス ファイルです。しかし、彼らが実際に行っていることには明確な違いがあります。この投稿では、この 2 つの違いと、それらを使用できる場所について説明します。
/dev/zero ファイル
データなしで必要なサイズのファイル (すべてゼロが書き込まれたファイル) を作成するために使用されます。
/dev/zero でファイルを作成しましょう:
# dd if=/dev/zero of=/opt/zero.txt bs=2048 count=2048 2048+0 records in 2048+0 records out 4194304 bytes (4.2 MB) copied, 0.150465 s, 27.9 MB/s
ゼロが連続するファイルを作成します。したがって、/dev/zero は、データに意味を持たない必要なサイズの新しいファイルを作成するために使用されるファイルであると言えます。
/dev/zero ファイルを dd コマンドと組み合わせて使用して、ディスクを消去することもできます。例:
# dd if=/dev/zero of=/dev/sda bs=2K conv=noerror,sync
このプロセスで使用できる別のファイルは /dev/null:
/dev/null
多くの場合、すべての出力を送信するのは良いことですが、エラー (一部のコマンドで予期される) を特別なデバイス /dev/null にリダイレクトすることも定期的に行う必要があります。
null の種類は、機能性を提供します。それは、ゴミ箱とブラック ホールの間のどこかです。このファイルは、サイズがゼロのファイルを作成する場合にも役立ちます。
たとえば、現在のディレクトリにファイルとフォルダーがほとんどない場合:
# ls anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates Desktop Downloads Music Public Videos
「ls」コマンドの出力を「/dev/null」ファイルにリダイレクトすると、null ファイルを読み取った後でも、出力データを再度取得できません:
# ls > /dev/null # cat /dev/null #
/dev/null を再作成する方法
以下のコマンドは 1 行に配置され、セミコロン「;」で区切られて、できるだけ速く実行し、実行中のシステムにできるだけ影響を与えないようにしています。
# rm /dev/null ; mknod -m 0666 /dev/null c 1 3 ; Execute: yes
すべてが適切に配置されていることを確認します:
# ls -al /dev/null
まとめ
出力を /dev/zero にリダイレクトすると、/dev/null とまったく同じように動作します:データが消えます。ただし、実際には、/dev/null がこの目的で最もよく使用されます。
では、なぜこの特別なデバイスがあるのでしょうか。 /dev/zero は null バイトの読み取りにも使用できるためです。可能なすべての 256 バイトのうち、ヌル バイトは最初の 16 進数の 00 です。ヌル バイトは、コマンドの終了を示すためによく使用されます。