라는 파일이 있고 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) 옵션을 사용할 수 있습니다 . 가치가 있는 것은 다음과 같습니다. 십진수/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
).