Provided by: manpages-zh_1.5.1-1_all bug

NAME

       xxd - 以十六進制形式表示

` (SYNOPSIS)
       xxd -h[elp]
       xxd [options] [infile [outfile]]
       xxd -r[evert] [options] [infile [outfile]]

yz (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
              顯示 可用 命令 概z 並且 退出. 不做 其它 任何 事情.

       -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
              顯示 版本 字符串.

i| (CAVEATS)
       xxd  -r 在 對待 行號 上 有一些 地方 o 注意. 如過 輸出 檔案 可以 定位,
       那麼 在 十六進制 檔案 中的 行漯 行號 可以 宣|, 順序 可以 打亂, 還 可以
       略去  一些  行號.  這種 情況 下, xxd 會 用 lseek(2) 來 定位.  如果 輸出
       檔案 不可以 定位, 那麼 行號 可以 不連續, 但是 必須 按 順序,  這種  情況
       下, 中間 會 插入 null 字符.

       xxd -r 從不 輸出 解析 錯誤. 錯誤 會 被跳過.

       在  編輯  十六進制 檔案時 n 注意 xxd -r 在 讀入 足夠列 之後 會跳過 本行
       後 所有的 數據 (見 選項 -c).  這 就是說 對可列印的 ASCII (或者 EBCDIC)
       的蚹  都會被  忽略.  用  xxd  -r  -p  把一  純十六進制 轉儲檔案 (或者
       postscript) 恢復 成 二進制檔案 與 列數 是否 正確 沒有 什麼  關系,  它會
       解釋 所有 看起來 像 兩 十六進制的 數字.

       請 注意
       % xxd -i file% xxd -i < file 的 區別.

       因為  lseek(2) 是 用來 姜m 輸入指針的, 所以 xxd -s +seekxxd -s seek
       是  有區別的.  如果  輸入  是  標準輸入,  並且  在  xxd  被執行是  它的
       標準輸入的  指針  位置  不是在  檔案的  開頭,  那麼 多了 '+' 效果 就會
       不一樣了. 下悸 例子 可能 幫助你 弄清楚(也可能 讓你 更糊塗)...

       在讀 之前 需n 姜m  輸入的  檔案指針;  因為  `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

       可是, 這種 情況 很少 發生, 我 也 很少 需n用 `+'. 當用了  -s  是,  作者
       比較 喜歡 用 strace(1) 或者 truss(1) 去 監控 xxd 的 行為.

l (EXAMPLES)
       (譯者: 實際 輸出 可能 和 例子 有 一些 出入, 只n 理解 其 意思 就行了)
       顯示 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      一切 正常.

       -1     不支持 此 操作 ( xxd -r -i 仍然 不行).

       1      解析 選項 錯誤.

       2      輸入 檔案 出錯.

       3      輸出 檔案 出錯.

       4,5    指定 的 偏移量 地址 不可 到達.

 (SEE ALSO)
       uuencode(1), uudecode(1), patch(1)

i (WARNINGS)
       這 工具 古怪的 念頭 是其 作者的 意思. 使用 這 工具的 任何  結果  都由
       自己 t責. 使用它, 探索它, 你 終會 成為 一 高手.

 (VERSION)
       此 手冊 為 1.7 版本的 xxd 而寫.

@ (AUTHOR)
       (c) 1990-1997 by Juergen Weigert
       <jnweiger@informatik.uni-erlangen.de>

       Distribute freely and credit me,
       make money and share with me,
       lose money and don't ask me.

       Tony Nugent
       <tony@sctnugen.ppp.gu.edu.au>  <T.Nugent@sct.gu.edu.au> 最先 開始 寫 本
       手冊
       Bram Moolenaar 做了 一些 小的 改動.  Juergen Weigert  完成了  手冊  的
       編寫.

[]
       <tony_ty@263.net>

[]
       2002/1/22

[inuxanhttp://cmpp.linuxforum.net