Ответ 1
xxd -p file
Или, если вы хотите все это на одной строке:
xxd -p file | tr -d '\n'
Как создать немодифицированный шестнадцатеричный дамп двоичного файла в Linux с помощью bash? Команды od
и hexdump
обе вставляют пробелы в дампе, и это не идеально.
Есть ли способ просто написать длинную строку со всеми шестнадцатеричными символами, минус пробелы или символы новой строки на выходе?
xxd -p file
Или, если вы хотите все это на одной строке:
xxd -p file | tr -d '\n'
Форматирование строк может привести к тому, что hexdump будет вести себя так, как вы хотите (без пробелов вообще, байт по байту):
hexdump -ve '1/1 "%.2x"'
1/1
означает, что "каждый формат применяется один раз и занимает один байт", а "%.2x"
- это фактическая строка формата, например, в printf. В этом случае: двухсимвольное шестнадцатеричное число, ведущие нули, если короче.
Кажется, что это зависит от деталей версии od
. В OSX используйте это:
od -t x1 -An file |tr -d '\n '
(Это печатает как шестнадцатеричные байты типа, без адреса. И, конечно же, пробелы удаляются впоследствии.)
Perl однострочный:
perl -e 'local $/; print unpack "H*", <>' file
Другие ответы предпочтительнее, но для чистого решения Bash я изменил script в мой ответ здесь, чтобы иметь возможность выводить непрерывный поток шестнадцатеричных символов, представляющий содержимое файла. (Его нормальный режим - эмулировать hexdump -C
.)