Je veux vérifier si un lecteur de disque dur a bien été mis à zéro. J'ai lu this , qui demande d'exécuter:
$ Sudo od /dev/disk2 | head
qui pour son disque dur renvoie:
0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
234250000
J'ai lu ici ça
head
renvoie les dix premières lignes de chaque nom de fichier qui lui est fourni.
Ai-je raison de supposer que sans | head
, od
imprimera tout le contenu du disque dur sur le terminal?
Quand j'ai essayé cela, j'ai obtenu la même sortie: 1 sept chiffres 0
s et 8 à six chiffres 0
s et 1 *
, sauf qu'après le *
Je reçois 7216060060000
. Est-ce que tout va jusqu'au *
les dix "lignes" (bien que ce ne soit pas un fichier et qu'il ne devrait pas y en avoir)?
Pourquoi le premier chiffre ne comprend-il que sept chiffres?
Que fait le *
signifier? Cela signifie-t-il que tout le reste peut être n'importe quoi (pas nécessairement des zéros), sont tous des zéros (c'est-à-dire que mon disque dur entier est tous des zéros) ou sont tous du même motif précédent se répétant (c'est-à-dire 1 _ sept chiffres 0
s et 8 à six chiffres 0
s)?
La page de manuel od
indique que la commande od
: "Ecrit une représentation non ambiguë, octets par défaut, de FILE sur la sortie standard." Qu'est-ce qu'un "octet octal"? This suggère qu'il s'agit d'une terminologie non standard mais peut être de 6 bits.
Mon disque dur fait 500 Go avec des secteurs de 512 octets. Est ce que ca 7216060060000
égale cette capacité?
7216060060000 octets octaux * (6 bits?/1 octet?) * (1 octet/8 bits) * (1 Go/1e9 octets) = 5412.045045 Go
ce qui n'est pas ma capacité de disque dur. Quelque chose a mal tourné?
Mon disque dur a-t-il été mis à zéro avec succès?
head
coupera la sortie après 10 lignes par défaut. Puisqu'il n'y avait que trois lignes au total dans la sortie, vous n'aurez que trois lignes avec ou sans head
.De man od
:
-v, --output-duplicates
do not use * to mark line suppression
Donc od
essaie d'éviter d'imprimer des lignes en double. *
Les marque.
De la documentation d'origine od
(qui est plus claire):
Chaque ligne de sortie se compose du décalage dans l'entrée, suivi de groupes de données du fichier. Par défaut, od imprime le décalage en octal, et chaque groupe de données de fichier correspond à la valeur d'entrée d'un C short int imprimé sous la forme d'un nombre octal unique.
Ainsi, chaque bloc dans son ensemble est un nombre octal. Un C short int
Est généralement 2 octets . od
prend deux octets de données, les traite comme un nombre, les imprime en base 8 comme un seul nombre et les répète. Chaque ligne a 8 de ces blocs, nous avons donc 16 octets par ligne. Le décalage est également imprimé en base 8, et 20 en base 8 est de 16 en base 10.
Puisque le décalage est en base 8, conversion en base 10:
$ echo $((8#7216060060000))
500107862016
$ echo $((8#7216060060000 / 1000 / 1000 / 1000))
500
$((N#X))
indique à bash de lire X
comme un nombre de base -N
. Puisque bash affiche par défaut en base 10, faire $((8#...))
convertit d'octal en décimal.
Oui.
Vous avez un tas de questions ici, cela répond # 5, la sortie octale représente les données binaires de trois bits à un chiffre, chaque chiffre aura une valeur de 0 à 7, avec 0 = binaire 000, 1 = binaire 001, 2 = binaire 010, 3 = binaire 011, 4 = binaire 100, 5 = binaire 101, 6 = 110 et 7 = 111. Octal était populaire avec les anciens systèmes informatiques, mais hexadécimal qui utilise 0-f pour représenter les valeurs 0000 à 1111 dans chaque Le chiffre est plus compact et utilisé plus fréquemment aujourd'hui.