概述
xxd 類似於 `hexdump` 或 `od`,它會以十六進制和 ASCII 字元串的形式顯示二進制檔案的內容。但其最大的特色是能夠將傾印的內容**逆轉換(reverse)**回原始二進制檔案。由於此功能,您可以在文字編輯器中以十六進制形式修改二進制檔案,然後使用 `xxd -r` 將其保存回二進制檔案。這種靈活性在分析和修改二進制檔案時非常強大,特別是與 `vim` 編輯器一起使用時。
主要特點
xxd 命令的主要特點如下:
- 以十六進制和 ASCII 格式輸出檔案內容。
- 能夠將十六進制傾印逆轉換回原始二進制。
- 可與普通文字編輯器一起用於修改二進制檔案。
- 提供多種選項以精細控制輸出格式。
xxd 與 hexdump 的差異
xxd 和 hexdump 在十六進制傾印功能上相似,但最大的差異在於是否存在逆轉換功能。
- xxd: 提供將十六進制傾印還原為原始二進制檔案的「逆轉換」功能 (`-r`)。與 `vim` 的整合功能強大。
- hexdump: 僅專注於傾印功能的工具,不提供逆轉換功能。
主要選項
我們根據目的將常用的 xxd 命令選項進行了分組。
1) 傾印與逆轉換選項
2) 說明
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`xxd` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用範例
透過 xxd 命令的各種使用範例來學習其功能。
檔案內容十六進制傾印
echo 'Hello World!' > test.txt
xxd test.txt
輸出 `test.txt` 檔案的內容為十六進制和 ASCII 字元。
將十六進制傾印保存到檔案
xxd /bin/ls > ls_dump.txt
將二進制檔案 `/bin/ls` 的內容保存到 `ls_dump.txt` 檔案。
將傾印檔案逆轉換回原始檔案
xxd -r ls_dump.txt ls_copy
將之前保存的 `ls_dump.txt` 檔案還原為原始二進制檔案 `ls_copy`。**此功能是 xxd 最大的特點。**
與 vim 一起編輯二進制檔案
vim file.bin
(在 vim 中) :%!xxd
(編輯)
(在 vim 中) :%!xxd -r
在 `vim` 中使用 `%!xxd` 命令將當前檔案切換到十六進制傾印模式,編輯後再使用 `%!xxd -r` 將其還原並保存。
安裝
xxd 包含在 `vim` 套件中。大多數 Linux 發行版都預設安裝了 `vim-common` 或 `vim` 套件,因此無需額外安裝。
Debian/Ubuntu
sudo apt update
sudo apt install -y vim-common
RHEL/CentOS/Fedora
sudo dnf install -y vim-common
提示與注意事項
整理了使用 xxd 命令時需要注意的事項。
提示
- `xxd` 的 `-r` 選項只能正常逆轉換由 `xxd` 生成的傾印檔案。它可能不適用於其他格式的十六進制傾印檔案。
- 修改二進制檔案時務必非常小心。一個錯誤的位元組可能會損壞整個程式。
- 逆轉換時,為了避免覆寫原始檔案,始終建議保存為不同的檔案名。(例如:`xxd -r old.hex > new.bin`)