Как мне создать неизмененный шестнадцатеричный дамп двоичного файла в Linux с помощью bash? od
И hexdump
команды как вставлять пробелы в отвал , и это не является идеальным.
Есть ли способ просто написать длинную строку со всеми шестнадцатеричными символами, минусами или символами новой строки в выводе?
Ответы:
xxd -p file
Или, если вы хотите все это в одной строке:
xxd -p file | tr -d '\n'
источник
Строки форматирования могут заставить hexdump вести себя точно так, как вы хотите (без пробелов вообще, побайтно):
1/1
означает «каждый формат применяется один раз и занимает один байт» и"%.2x"
является фактической строкой формата, как в printf. В этом случае: двухзначное шестнадцатеричное число, ведущие нули, если короче.источник
-v
или он отбросит повторные байты и заменит их звездочкой.; echo
alias to_hex="hexdump -ve '1/1 \"%.2x\"' && echo"
hexdump -ve '"%.2x"'
hexdump -n 13 -e '13/1 "%.2x" "\n"'
Кажется, это зависит от деталей версии
od
. На OSX используйте это:(Это печатается как шестнадцатеричные байты типа, без адреса. И пробелы, впоследствии, конечно, удаляются.)
источник
-v
в этом контексте, иначе это пропускает повторения с*
.Perl однострочный:
источник
Другие ответы предпочтительнее, но для чистого решения Bash я изменил скрипт в своем ответе здесь, чтобы иметь возможность выводить непрерывный поток шестнадцатеричных символов, представляющих содержимое файла. (Его нормальный режим - подражать
hexdump -C
.)источник