macOS 终端可用的 Hex 查看与编辑器

在 Windows 下我们可以使用 WinHex,而在 macOS 平台上,有什么不错的十六进制查看器、编辑器呢?

准备

首先,我们创建一个文件用于测试。

echo 'welcome' > file1

正文

HexDump

很多类 Unix 系统都包含这个工具。正如其名,功能就是导出文件的原始十六进制信息。

$ hexdump file1
0000000 6577 636c 6d6f 0a65
0000008

以上输出就是 welcome 的 ASCII 十六进制信息,如果文件很长,那将会很难与文本信息对应起来。

我们可以使用 -C 选项来同时打印文本。

$ hexdump -C file1
00000000  77 65 6c 63 6f 6d 65 0a              |welcome.|
00000008

如上,w 的十六进制 ASCII 码为 77e65

od

另一个十分常用的工具是 od。该工具提供 -x 参数用于输出十六进制的文件原始数据。

$ od -x file1
0000000 6577 636c 6d6f 0a65
0000010

同样,为了让输出更加易读,可使用 -c 参数输出文本。

$ od -xc file1
0000000 6577 636c 6d6f 0a65
               w   e   l   c   o   m   e  \n
0000010

xxd

xxd 是一个稍特殊的工具,它还提供了一个 -r 选项,可将十六进制信息转换回原始文件,可用于编辑 Hex 内容。

$ xxd file1
0000000: 7765 6c63 6f6d 650a                    welcome.

假设我们有 file2 文件,内容如下:

$ cat file2
000000: 7765 6c63 6f6d 650a

那么我们可以使用 -r 选项来将其转换为原文件内容:

$ xxd -r file2
welcome

hexyl

sharkdp/hexyl 是一款使用 Rust 编写的 Hex 查看器,支持高亮不同种类的字节。

它并不常见,是我最近在 GitHub 上发现的一个小工具,前些天上到 Trending 狂揽 1k+ Stars。

$ hexyl file1
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ 77 65 6c 63 6f 6d 65 0a ┊                         │welcome_┊        │
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘

它还支持使用 -n <N> 选项来限制仅读取文件的前 <N> 个字节。

$ hexyl -n 2 file1
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ 77 65                   ┊                         │we      ┊        │
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘

Vim

Vim 可谓是编辑器界的「重量级武器」了。上文我们介绍的都是 Hex 查看器,不仅如此,Vim 还提供了直接的编辑功能。

使用 Vim 打开文件后,输入 :% ! xxd 命令,界面将变成类似如下格式:

00000000: 7765 6c63 6f6d 650a                      welcome.

接着你可以随意编辑文本了,就像使用 xxd 转换后进行编辑修改一样。

完成后,输入 :%!xxd -r 命令并保存即可。

参考资料

本作品采用《CC 协议》,转载必须注明作者和本文链接
Former WinForm and PHP engineer. Now prefer Golang and Rust, and mainly working on DevSecOps and Kubernetes.
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

VIM 那个命令简直太棒了!!!

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
67
粉丝
557
喜欢
1147
收藏
990
排名:13
访问:15.8 万
私信
所有博文