The hd
or hexdump
command in Linux is used to filter and display the specified files, or standard input in a human readable specified format. For example, if you want to view an executable code of a program, you can use hexdump
to do so.
Syntax:
hd [OPTIONS...] [FILES...]
Options:
- -b : One-byte octal display. Display the input offset in hexadecimal, followed by sixteen space-separated, three column, zero-filled, bytes of input data, in octal, per line.Syntax:hd -b input.txt
The first column of the output represents the input offset in file. - -c : One-byte character display. Display the input offset in hexadecimal, followed by sixteen space-separated, three column, space-filled, characters of input data per line.Syntax:
hd -c input.txt - -C : Canonical hex+ASCII display. Display the input offset in hexadecimal, followed by sixteen space-separated, two column, hexadecimal bytes, followed by the same sixteen bytes in %_p format enclosed in “|” characters.Syntax:hexdump -C input.txt
- -d : Two-byte decimal display. Display the input offset in hexadecimal, followed by eight space-separated, five column, zero-filled, two-byte units of input data, in unsigned decimal, per line.Syntax:hd -d input.txt
- -n length : Where length is an integer. Interprets only ‘length’ bytes of output.Syntax:hd -n length input.txt
- -o: Two-byte octal display. Display the input offset in hexadecimal, followed by eight space-separated, six column, zero-filled, two byte quantities of input data, in octal, per line.Syntax:hd -o input.txt
- -s offset : Skip ‘offset’ bytes from the beginning of the input. By default, offset is interpreted as a decimal number. With a leading 0x or 0X, offset is interpreted as a hexadecimal number, otherwise, with a leading 0, offset is interpreted as an octal number. Appending the character b, k, or m to offset causes it to be interpreted as a multiple of 512, 1024, or 1048576, respectively.Syntax:hd -s offset input.txt
As you can see, in the output, first 6 characters, i.e. ‘Hello ‘ are skipped. - -v : Cause hexdump to display all input data. Without the -v option, any number of groups of output lines, which would be identical to the immediately preceding group of output lines (except for the input offsets), are replaced with a line comprised of a single asterisk.Syntax:hd -v input.txt
We will see the use of this option as we display the output using
-c
flag.
As you can observe, when we usehd
for the first time, without -v, when similar output appears, it prints out an asterisk (*). But when we pass a-v
flag, we get all the output lines. - -x : Two-byte hexadecimal display. Display the input offset in hexadecimal, followed by eight, space separated, four column, zero-filled, two-byte quantities of input data, in hexadecimal, per line.Syntax:hd -x input.txt
Reference :
- https://www.geeksforgeeks.org/hexdump-command-in-linux-with-examples/