というファイルがあり、input_file
内容は次のとおりですinput_file
。
$ cat input_file
1
2
3
4
5
6
7
8
9
次に、次のコマンドを実行します。
$ od -to2 input_file
出力:
0000000 005061 005062 005063 005064 005065 005066 005067 005070
0000020 005071
0000022
私の質問は:出力の「005」とはどういう意味ですかod
?
答え1
選択した出力オプションは2バイトを使用し、結果を8進数で表示します。
したがって、1
数字と文字で始まります\n
。以下を使用すると、簡単に表示できますod -cx
。
% od -cx f
0000000 1 \n 2 \n 3 \n 4 \n 5 \n 6 \n 7 \n 8 \n
0a31 0a32 0a33 0a34 0a35 0a36 0a37 0a38
0000020 9 \n
0a39
0000022
ユーザーの場合、対応するod -to2
2文字を16ビット数の「低バイト、高バイト」として扱います。
したがって、数字は10 * 256 + 49(\n
上位バイトのASCII 10、1
下位バイトのASCII 49)です。合計は2609です。
2609(8進数)は005061です。これは出力の最初の数字です。 (16進数はa31であり、これはod -cx
出力とも一致します)。
これがあなたが見るものです。 odは入力を16ビット整数に変換し、それを8進数で表します。
答え2
これはあまり意味がありません。-h
より良い画像を得るには、(hex)オプションを使用できます。価値があるのは次のとおりです。 10進数/8進数/16進数/char/utf8でレンダリングされた最初の行。
005061: 2609 05061 0xa31 text "\0121" utf8 \340\250\261
005062: 2610 05062 0xa32 text "\0122" utf8 \340\250\262
005063: 2611 05063 0xa33 text "\0123" utf8 \340\250\263
005064: 2612 05064 0xa34 text "\0124" utf8 \340\250\264
005065: 2613 05065 0xa35 text "\0125" utf8 \340\250\265
005066: 2614 05066 0xa36 text "\0126" utf8 \340\250\266
005067: 2615 05067 0xa37 text "\0127" utf8 \340\250\267
005070: 2616 05070 0xa38 text "\0128" utf8 \340\250\270
つまり、他のすべてのバイトは012(^J
)です。その他バイトは10進数です。私が使用しているプログラムのため、utf8は「無料」として提供されます(バラよりhex
)。