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
私の質問は、od
の出力で「005」はどういう意味ですか?
選択した出力オプションは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進数で表示します。
それは多くを意味するものではありません。 -h
(16進数)オプションを使用すると、より良い画像を取得できます。価値があるものとして、10進数/ 8進数/ 16進数/文字/ 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
つまり、1バイトおきに012(^J
)であり、otherバイトごとに10進数です。 utf8は、私が使用したプログラムのために「無料」で提供されました( hex
を参照)。