http://www./linux-admin/linux-command-selected-xxd.html
xxd [options] [infile [outfile]]
xxd -r[evert] [options] [infile [outfile]]
xxd 命令用于用二進制或十六進制顯示文件的內(nèi)容,如果沒有指定outfile參數(shù),則把結(jié)果顯示在屏幕上,如果指定了outfile則把結(jié)果輸出到 outfile中;如果infile參數(shù)為 – 或則沒有指定infile參數(shù),則默認從標準輸入讀入。
常用選項:
-b
轉(zhuǎn) 到 比特(二進制 數(shù)字) 模式, 而不是十六進制模式。在這種模式下, 每個字符被表示成八個 0/1 的數(shù)字,而不是一般的十六進制形式。每一行都以一個用十六進制形式表示的行號,后面是ascii (或者 ebcdic) 形式開頭。命令行選項 -r, -p 在這個模式下不起作用。
-h
顯示幫助信息后退出。
-l N
只輸出 N 個字符。
-p
以 postscript的連續(xù)十六進制轉(zhuǎn)儲輸出,這也叫做純十六進制轉(zhuǎn)儲。
-r
逆向操作: 把xxd的十六進制輸出內(nèi)容轉(zhuǎn)換回原文件的二進制內(nèi)容。
-seek offset
用在 -r 之后: 會在當前檔桉的 偏移量上增加
-s [+][-]seek
從infile的絕對或者相對偏移量
-u
十六進制輸出時使用大寫字母,默認是小寫字母。
使用范例:(摘自xxd man page)
顯示 file 除了 前 三行 (十六進制 的 0×30) 的 所有 內(nèi)容.
$ xxd -s 0×30 file
顯示 file 最后 三行 (十六進制 的 0×30) 的 所有 內(nèi)容.
$ xxd -s -0×30 file
顯示 120 個 字符, 每行 20 個 字符, 連續(xù) 顯示.
$ xxd -l 120 -ps -c 20 xxd.1
2e544820585844203120224d616e75616c207061
676520666f7220787864220a2e5c220a2e5c2220
32317374204d617920313939360a2e5c22204d61
6e207061676520617574686f723a0a2e5c222020
2020546f6e79204e7567656e74203c746f6e7940
7363746e7567656e2e7070702e67752e6564752e
顯示 120 個 字符, 每行 12 個 字符.
$ xxd -l 120 -c 12 xxd.1
0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 “M
000000c: 616e 7561 6c20 7061 6765 2066 anual page f
0000018: 6f72 2078 7864 220a 2e5c 220a or xxd”..\”.
0000024: 2e5c 2220 3231 7374 204d 6179 .\” 21st May
0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\” Ma
000003c: 6e20 7061 6765 2061 7574 686f n page autho
0000048: 723a 0a2e 5c22 2020 2020 546f r:..\” To
0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent
只 顯示 xxd.1 中 的 日期.
$ xxd -s 0×28 -l 12 -c 12 xxd.1
0000028: 3231 7374 204d 6179 2031 3939 21st May 199
把 input_file 考到 output_file 并 在 前面 增加 100 個 字節(jié)的 0×00.
$ xxd input_file | xxd -r -s 100 > output_file
給 檔桉 xxd.1 中的 日期 打 補釘.
$ echo ‘0000029: 3574 68′ | xxd -r – xxd.1
$ xxd -s 0×28 -l 12 -c 12 xxd.1
0000028: 3235 7468 204d 6179 2031 3939 25th May 199
建立 一個 65537 字節(jié)的 檔桉, 所有 字節(jié) 都是 0×00, 除了 最后 一個 字節(jié) 是 ‘A’ (十六進制 0×41).
$ echo ‘010000: 41′ | xxd -r > file
打開 autoskip, 顯示 上例 中 建立的 檔桉.
$ xxd -a -c 12 file
0000000: 0000 0000 0000 0000 0000 0000 …………
*
000fffc: 0000 0000 40 ….A
建立 一個 只 含有 一個 ‘A’ 的 檔桉. ‘-r -s’ 后面 的數(shù)字 同 檔桉 中的 行號 相 抵消; 結(jié)果是 開頭 的 字節(jié) 被跳過了.
$ echo ‘010000: 41′ | xxd -r -s -0×10000 > file
從 串行線 中 讀入 一個個的 單獨的 字符.
$ xxd -c1 < /dev/term/b &
$ stty < /dev/term/b -echo -opost -isig -icanon min 1
$ echo -n foo > /dev/term/b