hexdump
hexdump用於以16進制、10進制、8進制、ascii碼形式打印文件內容,也可以是標准輸入的內容。
用法
hexdump [選項] 文件 ...
選項
選項 | 參數 | 說明 |
---|---|---|
-b | 單字節8進制格式顯示 | |
-c | 單字節字符格式顯示 | |
-o | 兩byte八進制格式顯示 | |
-d | 兩byte十進制格式顯示 | |
-x | 兩byte十六進制格式顯示 | |
-C | 標准的hex+ASCII格式顯示 | |
-e | 格式 | 指定格式化輸出表達式 |
-f | 格式文件 | 指定格式換輸出表達式文件 |
-n | 長度 | 僅顯示指定長度字節的數據 |
-s | 偏移 | 跳過指定長度字節的數據 |
-v | 顯示時不壓縮相似的行 |
前面六個選項其實是通過后面五個選項實現的顯示效果。
hexdump高級用法:
-e
指定格式字符串,格式字符串包含在一對單引號中,格式字符串形如
'a/b "format1" "format2"'
每個格式字符串由三部分組成,每個部分由空格分隔,第一個形如a/b,表示每a個元素為一行,每個元素占b個字節。b表示對每b個輸入字節應用format1格式,a表示對每a個輸入字節應用format2格式,一般a>b,且b只能為1,2,4,另外a可以省略,省略則a=1。format1和format2中可以使用類似printf的格式字符串,如:
- %02d:兩位十進制
- %03x:三位十六進制
- %02o:兩位八進制
- %c:單個字符等
還有一些特殊的用法:
- %_ad:標記下一個輸出字節序序列的偏移序號,用十進制表示
- %_ax:標記下一個輸出字節序序列的偏移序號,用十六進制表示
- %_ao:標記下一個輸出字節序序列的偏移序號,用八進制表示
- %_p:對不能以常規字符顯示的用
.
代替
同一行如果要顯示多個格式字符串,則可以跟多個-e選項
hexdump -e '1/1 "%08_ax: "' -e '4/4 "%08X " "\n"' -v test.bin
hexdump -e '1/1 "%08_ax: "' -e '4/1 "%08X " " | "' -e '16/1 "%_p" "\n"' -v test.bin
hexdump -e '1/1 "%08_ad: "' -e '/1 "hex = %08X | "' -e '1/1 "dec = %10d | "' -e '/1 "\n"' -v test.bin