如何使用`od`命令检查硬盘清零?

如何使用`od`命令检查硬盘清零?

我想检查硬盘驱动器是否已成功清零。我读到,指示运行:

$ sudo od /dev/disk2 | head

其硬盘返回结果为:

0000000    000000  000000  000000  000000  000000  000000  000000  000000
*
234250000

我读了这里

head返回提供给它的每个文件名的前十行。

  1. 我是否可以正确地假设,如果没有| headod就会将整个硬盘内容打印到终端?

  2. 当我尝试这个时,我得到了相同的输出: 1 七位数字0和 8 六位数字0和 1 *,除了*我得到之后7216060060000。 包括 在内的所有内容都是*十“行”吗(尽管这不是文件并且不应该有任何行)?

  3. 为什么只有第一个数字是七位数字?

  4. 这是什么*意思?这是否意味着其他所有内容都可以是任何内容(不一定是零),全是零(即我的整个硬盘全是零),还是所有相同的先前模式都在重复(即 1 个七位数0和 8 个六位数0)?

  5. od手册页指出od命令将:“将 FILE 的明确表示(默认情况下为八进制字节)写入标准输出。”什么是“八进制字节”?表明它是非标准术语但可能是 6 位。

  6. 我的 HDD 为 500 GB,扇区为 512 字节。这7216060060000等于该容量吗?

    7216060060000 八进制字节 * (6 位?/ 1 八进制字节?) * (1 字节/8 位) * (1 GB/1e9 字节) = 5412.045045 GB

    这不是我的硬盘容量。是不是出了什么问题?

  7. 我的硬盘清零成功了吗?

答案1

  1. 默认情况下,输出 10 行后会停止head输出。由于输出总共只有三行,所以无论有没有 ,您都只能得到三行head
  2. 至于行,为什么只有文件才有线? 您想将所有命令输出都塞到一行吗?
  3. 它是一个八进制数,显示自输入开始以来已读取了多少字节。如果需要,它可以是更多数字。
  4. man od

    -v, --output-duplicates
          do not use * to mark line suppression
    

    因此od尽量避免打印重复的行。*标记那些。

  5. 原始od文件(更清楚一点):

    输出的每一行都包含输入中的偏移量,后面跟着文件中的数据组。默认情况下,od 以八进制打印偏移量,并且每组文件数据都是一个 C 短整型输入,打印为单个八进制数。

    因此,每个块作为一个整体都是一个八进制数。ACshort int通常为 2 个字节.od取两个字节的数据,将其视为数字,然后以 8 进制将其打印为单个数字,并重复。每行有 8 个这样的块,因此每行有 16 个字节。偏移量也以 8 进制打印,8 进制中的 20 是 10 进制中的 16。

  6. 由于偏移量以 8 为基数,因此转换为以 10 为基数:

    $ echo $((8#7216060060000))
    500107862016
    $ echo $((8#7216060060000 / 1000 / 1000 / 1000))
    500
    

    $((N#X))X告诉 bash以基数形式读取N。由于 bash 默认以十进制输出,因此执行此操作$((8#...))会将八进制转换为十进制。

  7. 是的。

答案2

这里您有很多问题,这是对第 5 个问题的回答,八进制输出表示三位二进制数据,每位数字的值都在 0-7 之间,其中 0 = 二进制 000,1 = 二进制 001,2 = 二进制 010,3 = 二进制 011,4 = 二进制 100,5 = 二进制 101,6 = 110,7 = 111。八进制在古代计算机系统中很流行,但十六进制使用 0-f 来表示每位数字从 0000 到 1111 的值,这种进制更紧凑,如今使用也更频繁。

相关内容