Linux od命令詳解
1.功能
od命令用于將指定文件內容以八進制、十進制、十六進制、浮點格式或ASCII編碼字符方式顯示,通常用于顯示或查看文件中不能直接顯示在終端的字符。od命令系統默認的顯示方式是八進制,名稱源于Octal Dump。
常見的文件為文本文件和二進制文件。od命令主要用來查看保存在二進制文件中的值,按照指定格式解釋文件中的數據并輸出,不管是IEEE754格式的浮點數還是ASCII碼,od命令都能按照需求輸出它們的值。
大家也可以了解一下hexdump命令,以十六進制輸出,但感覺hexdump命令美譽od命令強大。
2.命令格式
od [<選項><參數>] [<文件名>]
3.命令選項
A<RADIX>,--address-radix=RADIX:選擇以何種基數表示地址偏移;-j<BYTES>,--skip-bytes=BYTES:跳過指定數目的字節;-N,--read-bytes=BYTES:輸出指定字節數;-S<BYTES>, --strings[=BYTES]:輸出長度不小于指定字節數的字符串;-v,--output-duplicates:輸出時不省略重復的數據; -w<BYTES>,--width=<BYTES>:設置每行顯示的字節數,od默認每行顯示16字節。如果選項--width不跟數字,默認顯示32字節;-t<TYPE>,--format=TYPE:指定輸出格式,格式包括a、c、d、f、o、u和x,各含義如下: a:具名字符; c:ASCII字符或者反斜杠; d[SIZE]:十進制,正負數都包含,SIZE字節組成一個十進制整數; f[SIZE]:浮點,SIZE字節組成一個浮點數; o[SIZE]:八進制,SIZE字節組成一個八進制數; u[SIZE]:無符號十進制,只包含正數,SIZE字節組成一個無符號十進制整數; x[SIZE]:十六進制,SIZE字節為單位以十六進制輸出,即輸出時一列包含SIZE字節。--help:在線幫助; --version:顯示版本信息。
4.用法示例
(1)設置第一列偏移地址以十進制顯示。
od -Ad testfile
偏移地址顯示基數有:d for decimal, o for octal, x for hexadecimal or n for none。
(2)od命令不顯示第一列偏移地址。
od -An testfile
(3)以十六進制輸出,默認以四字節為一組(一列)顯示。
od -tx testfile
(4)以十六進制輸出,每列輸出一字節。
od -tx1 testfile
(5)顯示ASCII字符和ASCII字符名稱,注意換行符顯示方式的區別。
#顯示ASCII字符[b3335@localhost]$ echo lvlv|od -a0000000 l v l v nl0000005#顯示ASCII字符名稱[b3335@localhost]$ echo lvlv|od -tc0000000 l v l v /n0000005
(6)以十六進制顯示的同時顯示原字符。
[b3335@localhost]$ echo lvlv|od -tcx10000000 l v l v /n 6c 76 6c 76 0a0000005
(7)指定每行顯示512字節。
od -w512 -tx1 testfile
(8)od命令輸出時去除列與列之間的空格符。
當我們需要將文件內容顯示為十六進制,需要輸出連續的單個字節,每個字節以十六進制顯示。這時我們可以通過od命令將文件以單個字節為一組,十六進制輸出在同一行,并去除每個字節之間的空格。目前還不知道怎么通過指定od命令的相關選項去除列與列之間的空格,也許od命令本身并不支持。我的做法是:
(8.1)使用-An不輸出偏移地址;
(8.2)使用-v輸出時不省略重復的數據;
(8.3)使用-tx1以單個字節為一組按照十六進制輸出,-w1每列輸出一個字節;
(8.4)最后通過管道傳遞給awk的標準輸入,通過awk不換行輸出所有行,拼接為一行輸出。
具體命令如下:
od -An -w1 -tx1 testfile|awk '{for(i=1;i<=NF;++i){printf "%s",$i}}'
參考文獻
[1]od幫助文檔
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答