NAME
xxd - 以 十 六 進 制 形 式 表 示
總 覽 (SYNOPSIS)
xxd
-h[elp]
xxd [options] [infile [outfile]]
xxd -r[evert] [options] [infile [outfile]]
描 述 (DESCRIPTION)
xxd 建 立 一 個 指 定 文 件 或 者 標 準 輸 入 的 十 六 進 制 轉 儲 , 同 時 也 可 以 把 十 六 進 制 轉 儲 轉 換 成 原 來 的 二 進 制 形 式 。 同 uuencode(1) 和 uudecode(1) 一 樣 , 它 也 可 以 把 二 進 制 數 據 轉 換 成 ASCII 表 示 形 式 , 這 樣 電 子 郵 件 就 可 以 安 全 的 傳 輸 。 但 是 它 有 一 個 優 點 , 就 是 可 以 把 解 碼 後 的 結 果 輸 出 到 標 準 輸 出 。 同 時 它 還 可 以 用 來 給 二 進 制 文 件 打 補 丁 。
選 項 (OPTIONS)
如 果 沒 有 給 定 infile 就 用 標 準 輸 入 。 如 果 infile 是 一 個 “-” 字 符 , 也 從 標 準 輸 入 讀 入 。 如 果 沒 有 給 定 outfile ( 或 者 它 的 文 件 名 是 一 個 `-´ 字 符 ) , 結 果 將 輸 出 至 標 準 輸 出 。 注 意 我 們 用 的 是 一 個 很 “懶 ”的 解 析 器 , 它 只 檢 查 選 項 的 第 一 個 字 符 , 除 非 這 個 選 項 有 參 數 。 在 一 個 單 字 符 的 選 項 和 它 的 參 數 之 間 的 空 格 可 有 可 無 . 選 項 的 參 數 可 以 用 十 進 制 , 十 六 進 制 或 者 八 進 制 的 形 式 指 定 . 也 就 是 說 -c8, -c 8, -c 010 和 -cols 8 是 等 價 的 .
-a | -autoskip
打 開 /關 閉 autoskip: 用
一 個 單 獨 的 ’*’
來 代 替 空 行 . 默
認 關 閉 .
-b | -bits 轉 到 比 特
(二 進 制 數 字 ) 模
式 , 而 不 是 十 六
進 制 模 式 . 在 這
種 模 式 下 , 每 個
字 符 被 表 示 成
八 個 0/1 的 數 字 , 而
不 是 一 般 的 十
六 進 制 形 式 . 每
一 行 都 以 一 個
用 十 六 進 制 形
式 表 示 的 行 號 ,
後 面 是 ascii (或 者 ebcdic)
形 式 開 頭 . 命 令
行 選 項 -r, -p, -i 在 這
個 模 式 下 不 起
作 用 .
-c cols | -cols cols
-c cols | -cols cols 每 行 表 示 <cols> 個 字 符 . 默 認 16 (-i: 12, -ps: 30, -b: 6). 最 多 256.
-E | -EBCDIC
把 右 手 邊 的 字
符 編 碼 從 ASCII 變 爲
EBCDIC. 這 個 並 不 改
變 其 十 六 進 制
表 示 形 式 . 同 -r, -p
或 者 -i 一 起 用 是
沒 有 意 義 的 .
-g bytes | -groupsize bytes 每
<bytes> 個 字 符 (每
兩 個 十 六 進 制
字 符 或 者 八 個
二 進 制 數 字 ) 之
間 用 一 個 空 格
隔 開 . 用 -g 0 禁 止
分 組 . 在 普 通 模
式 中 <Bytes> 默 認
是 2 在 二 進 制
模 式 中 是 1. 分
組 並 不 適 用 於
postscript 或 者 include style 選 項
.
-h | -help 顯 示 可 用
命 令 概 述 並 且
退 出 . 不 做 其 它
任 何 事 情 .
-i | -include 輸 出 爲 C
語 言 的 包 含 文
件 形 式 . 除 非 xxd 從
標 準 輸 入 讀 入 ,
不 然 會 輸 出 一
個 完 整 的 靜 態
數 組 定 義 (與 輸
入 文 件 同 名 ).
-l len | -len len 輸 出
<len> 個 字 符 後
停 止 .
-p | -ps | -postscript | -plain
以 postscript 的 連 續 十
六 進 制 轉 儲 輸
出 . 這 也 叫 做 純
十 六 進 制 轉 儲 .
-r | -revert 逆 向 操 作
: 把 十 六 進 制 轉
儲 轉 換 (或 者 打
補 丁 ) 成 二 進 制
形 式 . 如 果 不 輸
出 到 標 準 輸 出 , xxd
並 不 把 輸 出 文
件 截 斷 , 而 是 直
接 寫 到 輸 出 文
件 . 用 -r -p 來 從 一
個 沒 有 行 號 沒
有 某 種 列 格 式
的 純 十 六 進 制
轉 儲 讀 入 . 附 加
的 空 格 和 換 行
可 以 出 現 在 任
何 地 方 .
-seek offset 用 在 -r 之
後 : 會 在 當 前 文
件 的 偏 移 量 上
增 加 <offset>.
-s [+][-]seek 從 infile 的 絕 對
或 者 相 對 偏 移
量 <seek> 開 始 . +
表 示 相 對 於 標
準 輸 入 當 前 的
位 置 (如 果 不 是
標 準 輸 入 就 沒
有 意 義 了 ). - 表
示 從 文 件 末 尾
(如 果 和 + 連 用 :
從 標 準 輸 入 當
前 位 置 ) 向 前 數
一 些 字 符 , 從 那
個 地 方 開 始 . 如
果 沒 有 -s 選 項 , xxd
從 當 前 位 置 開
始 .
-u 用 大 寫 字 母 |
. 默 認 的 是 小 寫 字 母 . |
-v | -version 顯 示 版 本 字 符 串 .
告 誡 (CAVEATS)
xxd -r 在 對 待 行 號 上 有 一 些 地 方 值 得 注 意 . 如 過 輸 出 文 件 可 以 定 位 , 那 麼 在 十 六 進 制 文 件 中 的 行 首 的 行 號 可 以 重 疊 , 順 序 可 以 打 亂 , 還 可 以 略 去 一 些 行 號 . 這 種 情 況 下 , xxd 會 用 lseek(2) 來 定 位 . 如 果 輸 出 文 件 不 可 以 定 位 , 那 麼 行 號 可 以 不 連 續 , 但 是 必 須 按 順 序 , 這 種 情 況 下 , 中 間 會 插 入 null 字 符 .
xxd -r
從 不 輸 出 解 析
錯 誤 . 錯 誤 會 被
跳 過 . 在 編 輯 十
六 進 制 文 件 時
要 注 意 xxd -r 在 讀
入 足 夠 列 之 後
會 跳 過 本 行 後
面 所 有 的 數 據
(見 選 項 -c). 這 就 是
說 對 可 打 印 的 ASCII
(或 者 EBCDIC) 的 修 改
都 會 被 忽 略 . 用 xxd
-r -p 把 一 個 純 十 六
進 制 轉 儲 文 件
(或 者 postscript) 恢 復 成
二 進 制 文 件 與
列 數 是 否 正 確
沒 有 什 麼 關 係 ,
它 會 解 釋 所 有
看 起 來 像 兩 個
十 六 進 制 的 數
字 . 請 注 意
% xxd -i file 和
% xxd -i < file 的 區 別 . 因
爲 lseek(2) 是 用 來 重
置 輸 入 指 針 的 ,
所 以 xxd -s +seek 和 xxd -s
seek 是 有 區 別 的 .
如 果 輸 入 是 標
準 輸 入 , 並 且 在 xxd
被 執 行 是 它 的
標 準 輸 入 的 指
針 位 置 不 是 在
文 件 的 開 頭 , 那
麼 多 了 個 ’+’ 效
果 就 會 不 一 樣
了 . 下 面 的 例 子
可 能 幫 助 你 弄
清 楚 (也 可 能 讓
你 更 糊 塗 )... 在 讀
之 前 需 要 重 置
輸 入 的 文 件 指
針 ; 因 爲 ’cat’ 已
經 讀 到 了 輸 入
的 文 件 尾 .
% sh -c ’cat > plain_copy; xxd -s 0 >
hex_copy’ < file 從 0x480 (=1024+128)
開 始 讀 . ’+’ 表
明 "相 對 於 當 前
的 文 件 位 置 ",
也 就 是 說 從 dd 讀
了 1k, 在 此 基 礎 上
再 加 ’128’.
% sh -c ’dd of=plain_snippet bs=1k count=1; xxd -s
+128 > hex_snippet’ < file 從 0x100 (
= 1024-768) 開 始 讀 .
% sh -c ’dd of=plain_snippet bs=1k count=1; xxd -s
+-768 > hex_snippet’ < file 可
是 , 這 種 情 況 很
少 發 生 , 我 們 也
很 少 需 要 用
’+’. 當 用 了 -s 是 ,
作 者 比 較 喜 歡
用 strace(1) 或 者 truss(1) 去
監 控 xxd 的 行 爲 .
例 子 (EXAMPLES)
(譯
者 : 實 際 輸 出 可
能 和 例 子 有 一
些 出 入 , 只 要 理
解 其 意 思 就 行
了 ) 顯 示 file 除 了
前 三 行 (十 六 進
制 的 0x30) 的 所 有 內
容 .
% xxd -s 0x30 file 顯 示 file
最 後 三 行 (十 六
進 制 的 0x30) 的 所 有
內 容 .
% xxd -s -0x30 file 顯 示 120 個
字 符 , 每 行 20 個 字
符 , 連 續 顯 示 .
% 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 <t
0000060: 6f6e 7940 7363 746e 7567 656e ony@sctnugen
000006c: 2e70 7070 2e67 752e 6564 752e .ppp.gu.edu. 只
顯 示 xxd.1 中 的 日 期
.
% xxd -s 0x28 -l 12 -c 12 xxd.1
0000028: 3231 7374 204d 6179 2031 3939 21st May 199 把
input_file 考 到 output_file
並 在 前 面 增 加 100
個 字 節 的 0x00.
% xxd input_file | xxd -r -s 100 > output_file
給 文 件 xxd.1 中 的 日
期 打 補 釘 .
% echo ’0000029: 3574 68’ | xxd -r - xxd.1
% xxd -s 0x28 -l 12 -c 12 xxd.1
0000028: 3235 7468 204d 6179 2031 3939 25th May 199 建
立 一 個 65537 字 節 的
文 件 , 所 有 字 節
都 是 0x00, 除 了 最 後
一 個 字 節 是 ’A’
(十 六 進 制 0x41).
% 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’ 後 面 的 數 字
同 文 件 中 的 行
號 相 抵 消 ; 結 果
是 開 頭 的 字 節
被 跳 過 了 .
% echo ’010000: 41’ | xxd -r -s -0x10000 >
file 在 編 輯 器 , 比
如 vim(1) 中 把 xxd 當
成 一 個 過 濾 程
序 來 用 , 用 十 六
進 制 來 顯 示 被
標 記 爲 ’a’ 和
’z’ 中 間 的 區 域
. :’a,’z!xxd 在 編 輯
器 , 比 如 vim(1) 中 把
xxd 當 成 一 個 過 濾
程 序 來 用 , 用 來
恢 復 被 標 記 爲
’a’ 和 ’z’ 中 間
的 區 域 的 十 六
進 制 顯 示 .
:’a,’z!xxd -r 在 編 輯
器 , 比 如 vim(1) 中 把
xxd 當 成 一 個 過 濾
程 序 來 用 , 用 來
恢 復 一 行 的 十
六 進 治 顯 示 . 把
光 標 移 動 到 相
應 行 並 鍵 入 :
!!xxd -r 從 串 行 線 中
讀 入 一 個 個 的
單 獨 的 字 符 .
% xxd -c1 < /dev/term/b &
% stty < /dev/term/b -echo -opost -isig -icanon min 1
% echo -n foo > /dev/term/b
返 回 值 (RETURN VALUES)
此 程 序 返 回 如 下 的 錯 誤 碼 :
0 一 切 正 常 |
.
操 作 ( xxd -r
-i 仍 然 不 行 ). 地 址 不 可 到 達 . 參 見 (SEE ALSO)uuencode(1), uudecode(1), patch(1) 警 告 (WARNINGS)這 個 工 具 古 怪 的 念 頭 是 其 作 者 的 意 思 . 使 用 這 個 工 具 的 任 何 結 果 都 由 自 己 負 責 . 使 用 它 , 探 索 它 , 你 終 會 成 爲 一 個 高 手 . 版 本 (VERSION)此 手 冊 頁 爲 1.7 版 本 的 xxd 而 寫 . 作 者 (AUTHOR)(c) 1990-1997
by Juergen Weigert Distribute
freely and credit me, Tony Nugent
[中 文 版 維 護 人 ]唐 友 <tony_ty [AT] 263.net> [中 文 版 最 新 更 新 ]2002/1/22 [中 國 Linux論 壇 man手 冊 頁 翻 譯 計 劃 ]跋本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh |