Я хочу проверить, был ли жесткий диск успешно обнулен. Я считал это, которое сообщает для выполнения:
$ sudo od /dev/disk2 | head
который для его возвратов жесткого диска:
0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
234250000
Я считал здесь это
head
возвращает первые десять строк каждого имени файла, которое предоставляется ему.
Действительно ли я прав в принятии этого без | head
, od
распечатает все содержание жесткого диска к терминалу?
Когда я попробовал это, я получил тот же вывод: 1 семиразрядное 0
s и 8 шестиразрядных 0
s и 1 *
, за исключением того, что после *
Я добираюсь 7216060060000
. Все до и включая *
эти десять "строк" (хотя это не файл и не должно быть никаких строк)?
Почему только первые цифры номер семь?
Что делает *
средний? Это означает, что все остальное может быть чем-нибудь (не, обязательно обнуляет), все обнуляет (т.е. мой целый жесткий диск, все обнуляет), или все равно предшествуют повторению шаблона (т.е. 1 семиразрядное 0
s и 8 шестиразрядных 0
s)?
od
страница справочника указывает od
команда будет: "Запишите однозначное представление, восьмеричные байты по умолчанию, ФАЙЛА к стандартному выводу". Что такое "восьмеричный байт"? Это предполагает, что это - нестандартная терминология, но могло бы быть 6 битов.
Мой жесткий диск составляет 500 ГБ с 512-байтовыми секторами. Делает это 7216060060000
равняться той способности?
7 216 060 060 000 восьмеричных байтов * (6 битов? / 1 восьмеричный байт?) * (биты на 1 байт/8) * (1 байт GB/1e9) = 5 412,045045 ГБ
который не является моей способностью жесткого диска. Что-то шло не так, как надо?
Мой жесткий диск был успешно обнулен?
head
отключит вывод после 10 строк по умолчанию. С тех пор было только три общих количества строк в выводе, Вы получите только три строки с или без head
.От man od
:
-v, --output-duplicates
do not use * to mark line suppression
Так od
старается не печатать дублирующиеся строки. *
метки они.
Из оригинала od
документация (который более ясен):
Каждая строка вывода состоит из смещения во входе, сопровождаемом группами данных из файла. По умолчанию передозировка печатает смещение в восьмеричном, и каждая группа данных файла является ценностью короткого целого C входа, распечатанного как единственное восьмеричное число.
Таким образом, каждый блок в целом является восьмеричным числом. C short int
обычно 2 байта. od
берет двухбайтовую ценность данных, рассматривает его как число и печатает его в основе 8 как единственное число и повторения. Каждая строка имеет 8 таких блоков, таким образом, у нас есть 16 байт на строку. Смещение также печатается в основе 8, и 20 в основе 8 16 в основе 10.
Так как смещение находится в основе 8, преобразовывая в основу 10:
$ echo $((8#7216060060000))
500107862016
$ echo $((8#7216060060000 / 1000 / 1000 / 1000))
500
$((N#X))
говорит удару читать X
как основа -N
число. Начиная с выводов удара в основе 10 по умолчанию, делая $((8#...))
преобразовывает от восьмеричного до десятичного числа.
Да.
У Вас есть набор вопросов здесь, это отвечает на № 5, восьмеричный вывод представляет двоичные данные три бита цифре, каждая цифра будет иметь значение от 0-7, с 0 = двоичные 000, 1 = двоичный 001, 2 = двоичные 010, 3 = двоичные 011, 4 = двоичные 100, 5 = двоичные 101, 6 = 110, и 7 = 111. Восьмеричный было популярно у древних компьютерных систем, но шестнадцатеричное число, которое использует 0-f для представления значений 0000 до 1111 в каждой цифре, более компактно и используется более часто сегодня.