Linuxコマンドodの出力で「005」とはどういう意味ですか?

Linuxコマンドodの出力で「005」とはどういう意味ですか?

というファイルがあり、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 -to22文字を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)。

関連情報