Saltar la navegación

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