この複雑なtrコマンドの機能は何ですか?

この複雑なtrコマンドの機能は何ですか?
tr '\0' '\071' < /dev/zero | dd of=/dev/sda bs=1M conv=fsync 2>/dev/null

このコマンドは、ディスクをゼロにするddコマンドの直後に実行されます。 16進ダンプの出力を変更します。

0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
7745d6000

到着

0000000 3939 3939 3939 3939 3939 3939 3939 3939
*
7745d6000

しかし、このコマンドが正確に何を達成しようとしているのかわかりません。

ベストアンサー1

それを分析しましょう:

tr '\0' '\071' < /dev/zero

読み取りで/dev/zeroゼロバイトを生成し、'\0'すべてのゼロバイト()を8進数('\071')に71を含むバイトに置き換えます。つまりASCIIでは数字9、16進数では0x39(hexdump表示される内容)です。結果は0x39バイトの終わりのないストリームです。

dd of=/dev/sda bs=1M conv=fsync 2>/dev/null

この入力(9個すべて)を受け取り、一度に1MBずつ記録し、/dev/sda完了する前にデータが記録されていることを確認してください。

dd/dev/sda端に達したときに停止するとtr停止します(パイプに書き込むことができなくなり、停止します)。

おそらくその目的は、以前にドライブにあったすべてのデータをマスクすることです。これが実際に役に立つかどうかは別の問題です。

おすすめ記事