DOS 텍스트 파일을 Unix로 변환

DOS 텍스트 파일을 Unix로 변환

DOS 형식의 PHP 스크립트가 여러 개 있는데( 상태 표시줄에 vi표시됨 [noeol] [dos]) 예상대로 사용할 수 없습니다.

dos2unix나는 줄 끝을 수정하기 위해 그것들을 실행했습니다 .

dos2unix index.php

하지만 파일을 열면 vi상태 표시줄에 계속 표시됩니다.[noeol]

vi의 16진수 편집기 모드( )에서 확인한 결과, :%!xxd놀랄만한 내용은 없었습니다.

원본 파일에서 줄 끝은 다음과 같습니다.0x0D 0x0A

실행 후 다음 dos2unix과 같을 경우:0x0A

또한 파일의 마지막 줄에 올바른 줄 끝이 있고 거기에도 있는지 확인했습니다( 0x0A).

또 무엇이 이 문제를 일으킬 수 있으며 걱정해야 합니까?

저는 CentOS 5.6 x64를 실행하고 있습니다.

답변1

@Klox가 말했듯이 그 이후 running dos2unix남은 문제는 vi마지막 줄에 줄바꿈이 누락된 것으로 보입니다.

파일을 열고 vi저장하면 줄 바꿈이 추가됩니다.

또는 전체 작업을 일괄적으로 수행할 수도 있습니다 ed.

#!/bin/bash
for f in <list-of-files-goes-here>; do
    ed -s -- "$f" <<<$',s/\r//g\nw' >/dev/null
done

답변2

마지막 줄에 줄 끝(\n)이 없다는 경고만 표시됩니다.

답변3

DOS 시스템은 줄 끝에 캐리지 리턴(eol) 문자를 입력합니다. 이는 vi에서 다음과 같이 표시됩니다 ^M.

다음을 실행해 보세요.

:%s/^M//g

답변4

(이전 skool vi 대신) vim을 사용하는 경우 다음을 수행할 수 있습니다.

:set ff=dos
:e!

보기 흉한 "^M" 접미사 없이도 PHP 파일을 편집할 수 있습니다. 나는 이것이 DOS "텍스트 파일" 형식으로도 저장된다고 생각합니다. 이것은 어떤 방식으로든 Windows와 파일을 공유하는 경우에 유용합니다.

약간의 사설: MS-DOS용으로 선택된 2바이트 줄 끝 표시는 세그먼트, 드라이브 문자 및 "\" 디렉터리 구분 기호에 이어 두 번째로 MS-DOS가 세상에 부과한 가장 큰 문제 중 하나였을 것입니다. . 이 2바이트 표시는 여전히 "텍스트"와 "바이너리"를 구분하는 이유입니다. 이런.

관련 정보