web-dev-qa-db-ja.com

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

私の質問は、odの出力で「005」はどういう意味ですか?

1
Ren

選択した出力オプションは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進数で表示します。

5
Stephen Harris

それは多くを意味するものではありません。 -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 を参照)。

1
Thomas Dickey