/ dev / zeroの目的は?


49

私はしようとしましたがcat /dev/zero、何もしないようでした。私はグーグルで調べました/dev/zeroが、それは基本的に無限のサイズの空のファイルだと言います。されcat、存在しない文字の無限の数を印刷しますか?これはどのように作動しますか?0バイトの場合、どのようにして無限のデータを提供しますか?単純に空のファイルを作成できる場合、このファイルの用途は何ですか?


11
実行cat -v /dev/zeroして、実行されていることを確認します。一般的な目的については、未使用スペースをゼロでクリア(ext3、ext4)を参照してください。
マナトワーク

/ dev / nullもあります。これは、読み取りたい場合は空のファイルのように動作し、書き込みたい場合はブラックホールとして動作します。
ジョフェル

@jofelが、無限の0ビットに/ dev / nullを使用することはできませんよね?cat foo > /dev/nullそして、cat foo > /dev/zero同じですが、cat /dev/nullそしてcat /dev/zero、正しい同じではありませんか?
tkbx

@tkbxはい、正しい。プログラムがEOFから読みたい場合、/dev/nullすぐにEOFを返します。/dev/zero0バイトを無限に返します。
ジョフェル

回答:


53

/dev/zeronull文字の無限ストリームを提供する特別なファイル(この場合、擬似デバイス)です(したがって、16進数0x00)。あなたcatが何も出力していないのはそのためです(ただし、実行してみてくださいod(8進ダンプ))。

「サイズが無限の空白ファイル」は100%正しいわけではありません。通常のファイルではなく、特殊なファイル(「ストリーム」やジェネレーターのようなもの)です。たとえば、dd(のようにdd if=/dev/zero of=yourfile count=1024 bs=1024)を使用して、必要なだけ読み取ることができます。

これは実際には空のファイルではなく、空のファイルの作成にも使用されません。ゼロのみで埋められたファイルまたはメモリページの作成に使用されます。また、それに書き込みを行って、陥没穴のように動作させることもできます(ただし、より人気のある兄弟/dev/nullがこれによく使用されます)。


しかし、なぜ誰かが空白を埋めたいのでしょうか?
tkbx

5
たとえば、前にあったものを消去します。または送信するとき。
コネラック

4
私はsrmマニュアルやソースを読んでいませんが、ほとんどの「安全な消しゴム」は、ドライブをゼロにする代わりに(擬似)ランダムデータを書き込むことを好みます。個々のビットは100%真の1または0ではなく、単に「ほぼ1」または「ほぼ0」であるため、ゼロ化されたハードディスクの元の内容を引き続き差し引くことができます。 「または「完全に正しい」が、通常は単に反対側へのスイングで十分です
。-コネラク

11
@tkbx ddがパーティションを作成しようとすると、後で圧縮ファイルを小さくするために、ランダムではなく0にすべての空のスペースを埋めることができます。
ニューロ

1
@Konerak私はそれをかなり疑っています。それはあちこちで言われたことを聞いたことがあり、リモートの新しいハードドライブ(少なくとも過去10年で作られた)でそれが可能であるという証拠を見たことは一度もありません。
ロブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.