这个复杂的 tr 命令有什么作用?

-1 linux command-line

tr '\0' '\071' < /dev/zero | dd of=/dev/sda bs=1M conv=fsync 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

此命令在将磁盘清零的 dd 命令之后立即运行。它将 hexdump 输出从

0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
7745d6000
Run Code Online (Sandbox Code Playgroud)

0000000 3939 3939 3939 3939 3939 3939 3939 3939
*
7745d6000
Run Code Online (Sandbox Code Playgroud)

但我无法确切地弄清楚该命令的目的是什么

Ste*_*itt 5

让我们分解一下:

tr '\0' '\071' < /dev/zero
Run Code Online (Sandbox Code Playgroud)

从 读取/dev/zero,它产生零字节,并用'\0'八进制 ( '\071') 中包含 71 的字节替换所有零字节 ( ) ,ASCII 中的数字 9 或十六进制中的 0x39(这是hexdump显示的内容)。结果是一个永无止境的 0x39 字节流。

dd of=/dev/sda bs=1M conv=fsync 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

获取此输入(全部为 9)并将其写入/dev/sda,一次 1 兆字节,确保在完成之前写出数据。

dd到达终点时停止/dev/sda;这tr也会导致停止(它不能再写入管道并停止)。

据推测,目的是隐藏驱动器上先前存在的任何数据;这是否真的有用是另一回事。