OD

電腦命令

od 命令用途是以指定格式顯示文件。

常見的文件為文本文件和二進位文件。

語法


使用字元串類型顯示文件,來格式化輸出。
od [ -v ] [ -A AddressBase ] [ -N Count ] [ -j Skip ] [ -t TypeString ... ] [ File ... ]
使用標誌顯示文件,來格式化輸出。
od [ -a ] [ -b ] [ -c ] [ -C ] [ -d ] [ -D ] [ -e ] [ -f ] [ -F ] [ -h ] [ -H ] [ -i ] [ -I ] [ -l ] [ -L ] [ -o ] [ -O ] [ -p ] [ -P ] [ -s ] [ -v ] [ -x ] [ -X ] [ [ -S [ N ] ] [ -w [ N ] ] [ File ] [ [ + ] Offset [ . | b | B ] [ + ] Label [ . | b | B ] ]

描述


常見的文件為文本文件和二進位文件。此命令主要用來查看保存在二進位文件中的值。比如,程序可能輸出大量的數據記錄,每個數據是一個單精度浮點數。這些數據記錄存放在一個文件中,如果想查看下這個數據,這時候od命令就派上用場了。在我看來,od命令主要用來格式化輸出文件數據,即對文件中的數據進行無二義性的解釋。不管是IEEE754格式的浮點數還是ASCII碼,od命令都能按照需求輸出他們的值。
如果沒有指定文件名,或者文件名為“-”,則從標準輸入讀入數據。
od 命令用指定格式顯示由 File 參數指定的文件。如果 File 參數沒有給定, od 命令讀取標準輸入。使用多個 -bcCDdFfOoSstvXx 選項可以指定多個類型。
在第一個語法格式中,輸出格式是由 -t 標誌指定。如果沒有指定格式類型,-t o2 是預設值。
在第二個語法格式中,輸出格式由標誌組合指定。Offset 參數指定了文件中文件輸出的開始點。預設情況下,Offset 參數解釋為八進位位元組。如果附加了 . 點後綴,參數解釋為十進位的;如果參數前導以 x 或 0x 開始,處理為十六進位。如果 b 後綴添加到參數,解釋為塊是 512 位元組;如果 B 後綴添加到參數上,解釋為塊是 1024 位元組。

參數


Label 參數解釋為首位元組顯示的偽地址。如果使用了該參數,它在()括弧中給出,遵循 Offset 參數。相對於 Offset 參數,後綴有同樣的意義。
當 od 命令讀取標準輸入時, Offset 參數和 Label 參數前頭必須有個 + (加號)。

環境變數


環境變數的設置如 LANG 和 LC_ALL 影響著 od 命令的操作。要獲取更多信息,請參閱 《AIX 5L V5.2 系統管理指南:操作系統與設備》中的『理解環境變數的語言環境』 。

標誌


第一種格式的標誌:
-A AddressBase 指定輸入偏移底數。此 AddressBase 變數是下列的字元之一:
d
偏移底數寫為十進位的。
o
偏移底數寫為八進位的。
x
偏移底數寫為十六進位的。
n
偏移底數沒有顯示。
除非指定 -A n,輸出行前將有需要寫的下一位元組的輸入偏移量,輸入偏移量在輸入文件間會形成。另外,跟隨在最後一個位元組的位元組偏移量將在所有的輸入數據處理完后顯示。沒有 -A 基地址選項和 [offset_string] 操作數,輸入偏移量底數以八進位顯示。
=

使用方法


-j Skip
在開始顯示輸出前,跳躍過由 Skip 變數給定的位元組數。如果指定的文件超過一個,od 命令在顯示輸出前跳躍過分配的連接輸入文件位元組數。如果混合輸入不是至少跳躍位元組的長度, od 命令將寫出診斷消息給標準錯誤,並退出非零狀態。 Count 選項參數
預設情況下,Skip 變數的值解釋為十進位數字。帶有前綴 0x 或 0X,偏移量解釋為十六進位數;帶有前綴 0,偏移量解釋為八進位數。如果字元 b,k,或者 m 附加到 Skip 變數包含的數,偏移量在位元組上等於 Skip 變數各自乘以 512,1024,或者 1024*1024 的值。
-N Count 格式不超過由 Count 變數指定的輸入位元組數。預設情況下,Count 變數解釋為十進位數。帶有前綴 0x 或者 0X,認為是十六進位數。如果以 0 開始,認為是八進位數。顯示地址的底數不是由 Count 選項參數的底數提示的。
-t TypeString 指定輸出類型。TypeString 變數是一個當寫出數據時,指定使用類型的字元串。多個類型能夠連接在同一個 TypeString 變數中,並且 -t 標誌能夠多次指定。對於每個指定的類型寫出了輸出行,依照給定類型指定字元的順序。TypeString 變數能夠包括下列字元:
a
顯示位元組為指定的字元。在 0 到 01777 範圍內,帶有至少 7 位的位元組,對於那些字元,用相應的名稱來寫。
c
顯示位元組為字元。由 c 類型字元串變換的位元組數由 LC_CTYPE 本地類別確定。可列印的多個位元組字元的寫法對應於字元的第一個位元組;兩個字元序列 ** 的寫法對應於字元中每個保留的位元組,作為字元繼續的指示。下列非圖形字元作為 C- 語言轉義序列使用:
\ 反斜杠
\a 提示符
\b 退格符
\f 換頁
\n 換行字元
\0 空
\r 回車符
\t 製表符
\v 垂直製表符
d
顯示位元組為有符號十進位。預設情況下,od 命令變換相應的位元組數為 C -語言類型 int。d 類型字元串能夠跟隨無符號的十進位整數,它指定了由每個輸出類型實例變換的位元組數。
可選的項 C,I,L,或者 S 字元能夠附加到 d 可選項,表示轉換應該分別適用於 char,int,long,或者 short
f
顯示位元組為浮點。預設情況下,od 命令變換相應的位元組數為 C - 語言類型 double。 f 類型字元串能夠跟隨無符號的十進位整數,它指定了由每個輸出類型的實例變換的位元組數。
可選項 F,D,或者 L 字元能夠附加到 f 可選項,表示轉換應該分別適用於類型 float,double,或者 long double。
o
顯示位元組為八進位。預設情況下, od 命令變換相應的位元組數為 C - 語言類型 int。 o 類型字元串能夠跟隨無符號的十進位整數,它指定了由每個輸出類型實例變換的位元組數。
可選項 C, I,L,或者 S 字元能夠附加到 o 可選項,表示轉換應該分別適用於類型 char,int,long,或者 short。
u
顯示位元組為無符號的十進位。預設情況下,od 命令變換相應的位元組數為 C-語言類型 int。u 類型字元串能夠跟隨無符號的十進位整數,它指定了由每個輸出類型的實例變換的位元組數。
可選的項 C,I,L,或者 S 字元能夠附加到 u 可選項,表示轉換應該分別適用於 char,int,long 或者 short。
x
顯示位元組為無符號的十六進位。預設情況下,od 命令變換相應的位元組數為 C-語言類型 int。x 類型字元串能夠跟隨無符號的十進位整數,它指定了由每個輸出類型實例變換的位元組數。
可選的項 C,I,L,或者 S 字元能夠附加到 x 可選項,表示轉換應該分別適用於 char,int,long 或者 short。
第二種格式的標誌:
-a 顯示位元組為字元,並且用它們的 ASCII 名稱顯示。如果 -p 標誌也給定了,帶有偶校驗的位元組加下劃線。 -P 標誌引起帶有奇校驗的位元組加下劃線。否則忽略奇偶性校驗。
-b 顯示位元組為八進位值。
-c 顯示位元組為 ASCII 符。下列非圖形字元作為 C-語言轉義序列使用:
\ 反斜杠
\a 提示符
\b 退格符
\f 換頁
\n 換行字元
\0 空
\r 回車符
\t 製表符
\v 垂直製表符
其它表示為 3 位的八進位數。
-C 顯示擴展字元作為標準列印 ASCII 字元(使用合適的字元轉義),並且以十六進位格式顯示多位元組字元。
-d 顯示 16 位字為無符號十進位值。
-D 顯示長字為無符號十進位值。
-e 顯示長字為雙精度、浮點。(如同 -F 標誌)
-f 顯示長字為浮點。
-F 顯示長字為雙精度、浮點。(如同 -e 標誌)
-h 顯示 16 位字為無符號十六進位。
-H 顯示長字為無符號十六進位值。
-i 顯示 16 位字為有標記十進位。
-I (大寫 i)顯示長字為有標記十進位值。
-l (小寫 L)顯示長字為有標記十進位值。
-L 顯示長字為有標記十進位值。
注意:標誌 -I(大寫 i),-l(小寫 L),和 -L 是相同的。
-o 顯示 16 位字為無符號八進位。
-O 顯示長字為無符號八進位值。
-p 表示對 -a 轉換進行偶校驗。
-P 表示對 -a 轉換進行奇校驗。
-s 顯示 16 位字為有標記十進位值。
-S[N] 搜索以空位元組結束的字元的字元串。 N 變數指定了需標識的最小長度的字元串。如果 N 變數省略了,最小長度預設值為 3 個字元。
-v 標誌對於下列兩種格式是一樣的:
-v 寫所有輸入數據。預設情況下,等同於先前輸出行的輸出行沒有列印,但是用只包含 * (星號)的行替換。當指定 -v 標誌時,列印所有的行。
-w [N] 指定需解釋並且在每個輸出行顯示的輸入位元組的數量。如果 -w 標誌沒有指定,每一顯示行讀取 16 位元組。如果指定了 -w 標誌沒有帶 N 變數,每個顯示行讀取 32 個位元組。最大輸入值是 4096 位元組。大於 4096 位元組的輸入值將重新分配最大值。
-x 顯示 16 位字為十六進位值。
-X 顯示長字為無符號十六進位值。(如同 -H 標誌)
退出狀態
此命令返回下列出口值:
0 所有輸入文件被成功處理。
>0 出現錯誤。

示例


1. 以八進位顯示文件,一次顯示一頁,請輸入:
od a.out | pg
此命令以八進位格式顯示 a.out 文件並且通過 pg 命令管道輸出。
2. 一次轉換文件為數個格式,請輸入:
od -t cx a.out > a.xcd
此命令把 a.out 文件的內容,以十六進位格式(x)和字元格式(c)寫到 a.xcd 文件中。
3. 在中間開始顯示文件(使用第一語法格式),請輸入:
od -t acx -j 100 a.out
此命令把 a.out 文件以指定的字元(a)、字元(c)和十六進位(x)格式顯示,從第 100 個位元組開始。
4. 在文件中間啟動(使用第二種語法格式),請輸入:
od -bcx a.out +100.
把 a.out 文件以八進位位元組(-b)、位元組(-c)和十六進位(-x)格式顯示,從第 100 個位元組開始。偏移量后的 . (點)表示它是十進位數。沒有點,輸出將從第 64(八進位為 100)個位元組開始。
文件
/usr/bin/od 包含od 命令。