如何从Bash查看二进制文件?

389

我想从命令行以二进制形式查看当前目录中文件的内容。如何实现?

13个回答

671
xxd可以同时处理二进制和十六进制。

二进制:


xxd -b file

十六进制:

xxd file

15
现在我的最爱是 sudo xxd /dev/diskn | less - krs013
7
它已经预装在Mac OS X和Linux上。 - Sridhar Sarnobat
1
这比“hexdump”更有优势,因为它还在侧边显示ASCII形式,使得我想要查看的位置更容易识别。 - Paŭlo Ebermann
1
并将输出转储到ASCII文本文件以供查看和搜索:xxd file > hex_dump_of_file.txt - Gabriel Staples
一个补充:xxd 不仅适用于 Linux shell。我认为它也随着 Vim 一起安装。我在 Windows 上安装了 Vim,然后发现我也可以在 Windows 上使用 xxd。 - Tiina
你甚至可以在 [tag:bash] 中处理二进制文件:在BASH中按字节读取文件 - F. Hauri - Give Up GitHub

195
hexdump -C yourfile.bin

当然,除非您想进行编辑。大多数Linux发行版默认都有hexdump(但显然不是所有Linux发行版都有)。


1
我喜欢这个想法,但像其他建议一样,它只输出十六进制。显然,这比二进制更紧凑,但我正在处理非常小的文件,所以二进制更受欢迎。 十六进制是我查看文件的唯一方式吗? - adam_0
1
那么这个文件有多小?如果超过几个字节,使用二进制将会让你失去理智。对于大多数情况来说,十六进制更加合理。如果你不熟悉十六进制,只需找到你感兴趣的字节并使用十六进制计算器进行转换即可。 - Duck
3
我需要确保我的文件正确压缩,但我不知道十六进制下应该是什么样子(每个单位的大小为7位),因此我必须手算来计算数据。 - adam_0
你有没有什么方法可以查看二进制文件中的文本?我可以获取十六进制代码,但是该如何将其解码为正常的人类文本? - Lukas Liesis
hexdump -C data.bin | hexdump -C 的输出结果如何? - cyb0k
2
hexdump -C 不显示二进制输出。这并没有回答问题。 - Daniel

78
vi your_filename

按下ESC

输入:%!xxd以查看十六进制字符串,然后输入:%!xxd -r返回到正常编辑。


我发现 :%!xxd 给我的文件添加了不需要的字符,例如换行符? - Quazi Irfan

40
作为备选方案,可以使用od -xc filename

13

如果您想在CentOS 7上打开二进制文件:

strings <binary_filename>

在我看来,这是所有答案中最简单、最优雅的一个。我希望我能给它点赞不止一次。 - Olumide
无疑是最佳答案。这将二进制文件转换为JSON文件。并非所有英雄都戴斗篷,这是真的。 - Shubham Pawar
4
它不会将其转换成JSON文件。它只是在对象中查找可打印的字符串并向您显示。它不会将二进制文件转换为文本或任何其他格式。 - Shai Alon

13

sudo apt-get install bless

Bless是一款GUI工具,可以查看、编辑、搜索等等功能。它非常轻量级。


1
是的。我觉得这比 Vim 更容易。 - Paulb
小心,它附带了Mono。 - andrej
1
在CentOS上使用Snap:sudo snap install bless-unofficial - Sameera K

8
Hexyl 很好用:sudo apt 安装 hexyl。 enter image description here

非常好! - Alex
非常好! - undefined

6
$ echo -n 'Hello world!' | hd
00000000  48 65 6c 6c 6f 20 77 6f  72 6c 64 21              |Hello world!|
0000000c

2
hd 是 "hexdump -C" 的别名吗? - JAR.JAR.beans
@JAR.JAR.beans 是的,确实如此。我使用它是因为它更容易记住。 - Aalex Gabi
因为它在某些系统上(Debian)默认存在。 - Aalex Gabi


3
为了让输出以十六进制的形式在一行中呈现:
xxd -p yourfile.bin | tr -d '\n'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接