Como crio um dump hexadecimal não modificado de um arquivo binário no Linux usando o bash? Os comandos od
e hexdump
inserem espaços no dump e isso não é o ideal.
Existe uma maneira de simplesmente escrever uma seqüência longa com todos os caracteres hexadecimais, menos espaços ou novas linhas na saída?
Respostas:
xxd -p file
Ou se você quiser tudo em uma única linha:
xxd -p file | tr -d '\n'
fonte
As strings de formato podem fazer com que o hexdump se comporte exatamente como você deseja (sem espaço em branco, byte a byte):
1/1
significa "cada formato é aplicado uma vez e ocupa um byte" e"%.2x"
é a string de formato real, como em printf. Nesse caso: número hexadecimal de 2 caracteres, zeros à esquerda se for menor.fonte
-v
ou ele eliminará bytes repetidos e os substituirá por um asterisco.; echo
torna impossível usar como apelido bash)alias to_hex="hexdump -ve '1/1 \"%.2x\"' && echo"
hexdump -ve '"%.2x"'
hexdump -n 13 -e '13/1 "%.2x" "\n"'
Parece depender dos detalhes da versão do
od
. No OSX, use este:(Isso é impresso como bytes hexadecimais do tipo, sem endereço. E espaço em branco excluído posteriormente, é claro.)
fonte
-v
neste contexto, caso contrário, pula repetições com*
.One-liner Perl:
fonte
As outras respostas são preferíveis, mas para uma solução Bash pura, modifiquei o script na minha resposta aqui para poder gerar um fluxo contínuo de caracteres hexadecimais que representam o conteúdo de um arquivo. (O modo normal é emular
hexdump -C
.)fonte