고양이 난독화가 포함된 파일 추가

고양이 난독화가 포함된 파일 추가

다음 명령을 실행하면:

$ cat picture.jpg > copy1.jpg

그리고

$ cat -v picture.jpg > copy2.jpg

copy1.jpg예, 완벽한 복제품 picture.jpg이지만 copy2.jpg훨씬 더 큽니다 picture.jpg.

copy2.jpg이는 cat이 생각하는 줄 끝이 대체 ^M되고 ^M각 줄 끝의 크기가 줄 끝보다 크기 때문이라고 생각합니다 . 이 올바른지?

이렇게 하면 in 인스턴스 cat copy2.jpg가 없다는 것을 알게 됩니다 .^Mcopy2.jpg

여기서 무슨 일이 일어나고 있는 걸까요? >출력이 입력과 다를 경우 cat을 사용하여 파일을 완벽하게 연결할 수 있습니까?

답변1

그것만이 아니다 ^M. 모든인쇄할 수 없는 문자(현재 로케일에서 무엇을 의미하든)가 포함된 바이트는 cat -v.

연결 파일을 사용하는 경우 cat출력을 수정하는 모든 옵션을 피해야 합니다. -b-n(숫자 줄), -E(마커 줄로 끝남 $), -s(반복되는 빈 줄 억제) 및 -v( -T인쇄 가능한 내용을 사용하여 인쇄할 수 없는 문자 표시) 수치).

답변2

당신의 분석이 제 생각에는 맞는 것 같습니다. cat이것이 주요 기능이기 때문에 파일을 연결하는 데 사용하겠습니다 . -v스위치나 해당 문제에 대한 스위치 없이 이 작업을 수행하십시오 .

cat -v ..이 파일을 사용하면 기본적으로 더 이상 사용되지 않게 됩니다. 이미지 뷰어로 열어보셨나요? 나는 당신의 방법을 시도했고 이것이 바로 내 상황입니다.

다음 명령을 사용하여 이에 대한 증거를 볼 수도 있습니다 file.

$ file copy*
copy1.png: PNG image data, 1440 x 847, 8-bit/color RGB, non-interlaced
copy2.png: ASCII text, with very long lines

cat정보 페이지에는 이 주제에 대한 자세한 내용이 있습니다.

'-v'
'--show-nonprinting'
     Display control characters except for LFD and TAB using '^'
     notation and precede characters that have the high bit set with
     'M-'.

On systems like MS-DOS that distinguish between text and binary
files, 'cat' normally reads and writes in binary mode.  However, 'cat'
reads in text mode if one of the options '-bensAE' is used or if 'cat'
is reading from standard input and standard input is a terminal.
Similarly, 'cat' writes in text mode if one of the options '-bensAE' is
used or if standard output is a terminal.

그럼 ^M은 어디에 있나요?

copy2.jpg파일을 열면 vim다음과 같이 흩어져 있는 것을 볼 수 있습니다.

                  SS#1

관련 정보