I really like hexdump
, especially because you can define a custom format; say:
$ echo -e '\x00\x01\x02\x03' | hexdump -v -e '1/1 "%_ad: "' -e '4/1 "%02X "' -e '1/1 " : "' -e '4/1 "%_p"' -e '1/1 "\n"'
0: 00 01 02 03 : ....
4: 0A : .
So, I can choose to have, say, 4 bytes per line, written as hexadecimal first, then as characters. But, what I'm missing here, is a "binary string" (or "bit string") formatting character; e.g. I'd like to write something like -e '4/1 "%08b "'
somewhere in that command line, and get, e.g.:
0: 00 01 02 03 : 00000000 00000001 00000010 00000011 : ....
4: 0A : 00001010 : .
Of course, then probably one would have to specify endianness (if groups of more than one byte should be formatted) etc… But in any case, this kind of formatting doesn't exist, as far as I can see in the hexdump
manual.
So my question is – what alternatives do I have on a Linux command line, so that I could obtain a formatted dump that includes binary strings as above, and yet to the greatest extent possible preserves the customizability of the hexdump
program (in terms of byte grouping) when using its -e
option?
Best Answer
Failing a dump program with suitable dump options, you can always cobble something together by using both
hexdump
andxdd
and then joining the output with paste. Its not pretty, but using a shell that supports process substitution (bash
will do):Output: