vim을 사용하면 쓰레기 문자 "^@"가 표시되지만 cat을 사용하면 올바른 데이터가 표시됩니다.

vim을 사용하면 쓰레기 문자 "^@"가 표시되지만 cat을 사용하면 올바른 데이터가 표시됩니다.

x.file 데이터를 32KB 크기의 가상 볼륨에 복사하고 동일한 볼륨에서 32KB를 다시 y.file로 읽으려고 합니다. cat y.file을 사용할 때 예상되는 출력이 표시되지만 vim/vi를 사용하여 콘텐츠를 볼 때마다 추가 문자 "^@"가 표시됩니다.

가상 볼륨에 데이터를 쓰는 명령입니다.

dd if=/tmp/x.file of=/dev/vv/<vv_id> seek=0 bs=16K count=2

가상 볼륨에서 데이터를 읽는 명령입니다.

dd of=/tmp/y.file if=/dev/vv/<vv_id> seek=0 bs=16K count=2

x.file은 일련의 패턴을 포함하며 크기는 24KB입니다.
예를 들어:

x.파일인 경우 PATTERN PATTERN PATTERN

그런 다음 y.filePATTERN PATTERN PATTERN^@^@^@^@

편집하다:

이제 "^@" 문자를 표시하는 이유가 무엇인지 알았습니다. 입력 파일 크기가 32KB 미만입니다.하지만 "^@"이 다른 값일 수 있는데 왜 채워져 있는지 여전히 의심스러우신가요? 특별한 이유가 있나요?

답변1

댓글에서x.file, 파일이 32768바이트(32KiB)보다 작은 것이 분명합니다 . 즉 , dd32KiB를 쓰도록 요청 하면 /dev/vv/<vv_id>파일의 전체 내용을 복사할 수 없으며 32KiB의 마지막 비트는 기록되지 않은 상태로 유지됩니다.

y.file두 번째 작업은 dd편집기에서 파일을 열 때 표시되는 초기화되지 않은 데이터를 복사합니다.

이것이 ^@편집기가 널 바이트를 표시하는 방법입니다. dd이것이 처음으로 장치에 기록되는 것인지 dd, 아니면 첫 번째 통화 전에 이미 장치에 있던 정크 데이터인지는 설명서를 읽어 도 명확하지 않습니다 dd.

관련 정보