macOS 終端可用的 Hex 檢視與編輯器

Wi1dcard發表於2019-06-20

在 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 focus on #DevSecOps and global networking.

相關文章