hexdump, hd
El comando hexdump o hd , este último es un enlace simbólico del primero, muestra los ficheros en formato ASCII, octal, decimal y hexadecimal, según se lo especifiquemos. Si no se indica ningún fichero, los datos los lee de la entrada estándar.
Por defecto, hexdump muestra un fichero en agrupaciones de dos bytes en hexadecimal, que es lo que hace también la opción -x:
$ cat t.txt
Esto es un
texto
de prueba
$ hexdump t.txt
0000000 7345 6f74 6520 2073 6e75 740a 7865 6f74
0000010 640a 2065 7270 6575 6162 000a
000001b
$ hexdump -x t.txt
0000000 7345 6f74 6520 2073 6e75 740a 7865 6f74
0000010 640a 2065 7270 6575 6162 000a
000001b
La primera columna indica en hexadecimal la posición dentro del fichero del primer byte que se muestra en cada fila comenzando por cero. Así, la posición del primer carácter de la primera fila es el 0; la posición del primer carácter de la segunda fila es el 16 o 10 en hexadecimal. El último número indica la posición del último byte del fichero, en este caso 27 o 1b en hexadecimal.
Para ver el fichero en hexadecimal, como antes, pero byte a byte, debemos usar la opción -C que además muestra a la izquierda el contenido en formato ASCII. Esta opción es la que incluye siempre el comando hd:
$ hexdump -C t.txt
00000000 45 73 74 6f 20 65 73 20 75 6e 0a 74 65 78 74 6f |Esto es un.texto|
00000010 0a 64 65 20 70 72 75 65 62 61 0a |.de prueba.|
0000001b
$ hd t.txt
00000000 45 73 74 6f 20 65 73 20 75 6e 0a 74 65 78 74 6f |Esto es un.texto|
00000010 0a 64 65 20 70 72 75 65 62 61 0a |.de prueba.|
0000001b
Con la opción -b podemos ver el fichero byte a byte en octal y con -c en ASCII:
$ hexdump -b t.txt
0000000 105 163 164 157 040 145 163 040 165 156 012 164 145 170 164 157
0000010 012 144 145 040 160 162 165 145 142 141 012
000001b
$ hexdump -c t.txt
0000000 E s t o e s u n \n t e x t o
0000010 \n d e p r u e b a \n
000001b
Como es de suponer, todas esta opciones se pueden combinar:
$ hexdump -bc t.txt
0000000 105 163 164 157 040 145 163 040 165 156 012 164 145 170 164 157
0000000 E s t o e s u n \n t e x t o
0000010 012 144 145 040 160 162 165 145 142 141 012
0000010 \n d e p r u e b a \n
000001b
Puede mostrarse también el fichero en decimal de dos en dos byte con la opción -d, y en octal con la opción -o:
$ hexdump -doxc t.txt
0000000 29509 28532 25888 08307 28277 29706 30821 28532
0000000 071505 067564 062440 020163 067165 072012 074145 067564
0000000 7345 6f74 6520 2073 6e75 740a 7865 6f74
0000000 E s t o e s u n \n t e x t o
0000010 25610 08293 29296 25973 24930 00010
0000010 062012 020145 071160 062565 060542 000012
0000010 640a 2065 7270 6575 6162 000a
0000010 \n d e p r u e b a \n
No siempre hay que mostrar todo el fichero, si necesitamos solo mostrar unos cuantos caracteres, debemos usar la opción -n, y -s para saltar caracteres desde el inicio:
$ hexdump -cb -n 8 t.txt
0000000 E s t o e s
0000000 105 163 164 157 040 145 163 040
0000008
$ hexdump -cb -s 8 t.txt
0000008 u n \n t e x t o \n d e p r u e
0000008 165 156 012 164 145 170 164 157 012 144 145 040 160 162 165 145
0000018 b a \n
0000018 142 141 012
000001b
$ hexdump -cb -s 2 -n 4 t.txt
0000002 t o e
0000002 164 157 040 145
0000006
También es posible personalizar la salida del comando hexdump, para lo cual debemos usar la opción -e o -f; en el manual del sistema (man hexdump) se muestran ejemplos de estas opciones.
Licencia: licencia de software libre GPL