tail 명령이 마지막 줄을 표시하지 않습니다

tail 명령이 마지막 줄을 표시하지 않습니다

파일이 변경될 때마다 마지막 줄을 읽으려면 다음 명령을 사용하고 있습니다.

tail -f -n1 Entrie.txt

작성된 첫 번째 줄에서는 문제 없이 표시되지만 나중에 두 번째 줄을 작성할 때 다음 오류가 발생합니다.

tail: Entrie.txt: file truncated

해당 오류를 표시한 후 파일에 기록된 모든 값을 표시합니다. 하지만 많은 줄을 작성한 후에는 오류가 더 이상 나오지 않고 수정될 뿐만 아니라 항상 잘 작동하려면 필요합니다.

Linux에서 이 명령을 실행하고 있습니다.

편집기에서 파일에 줄을 추가하고 저장하고 있습니다.

답변1

파일의 새 버전을 쓰거나 현재 버전에 데이터를 추가하여 파일을 수정할 수 있습니다.

쉘의 예:

  • date > sample_file.txt- 새 텍스트로 파일을 다시 생성합니다(명령 출력 date).
  • date >> sample_file.txt- 현재 파일에 텍스트를 추가합니다.

첫 번째 시나리오 - 파일이 잘렸고(내용이 삭제되고 다시 생성되었으므로 텍스트 편집기에서 간단히 "쓰기"하면 완료될 수 있음) tail이에 대해 경고합니다. 두 번째 경우 - tail의도한 대로 작동합니다.

답변2

텍스트 편집기가 파일을 저장할 때 매우 자주 발생하는 일은일시적인파일을 삭제하고 원본 파일을 비우고(잘라내고) 임시 파일의 내용을 원본 파일에 복사합니다. 이는 원본 파일의 권한, 소유권 및 기타 메타데이터를 변경하지 않기 위해 수행됩니다.

이는 의 관점에서 보면 tail파일이 잘려서(비워짐) 파일의 마지막 줄이 표시되기 시작한다는 의미입니다.편집자가 그것을 다시 쓰는 동안(이것이 전체 파일을 표시하는 이유입니다).

명령이 항상 파일의 마지막 줄만 표시하고 다른 줄은 표시하지 않도록 파일에 줄을 추가하려면 tail다음을 확인해야 합니다.추가파일에 줄을 추가합니다. 일반적으로 텍스트 편집기는고쳐 쓰기파일이 있는 경우 다른 방법을 사용하여 이 작업을 수행해야 할 수도 있습니다.

파일에 데이터를 추가하는 매우 기본적인 방법은 다음을 사용하는 것입니다 cat.

cat >>Entrie.txt

cat이렇게 하면 파일에 추가 됩니다 Entrie.txt. 이는 사용자의 입력을 기다리고 터미널에서 파일에 직접 입력할 수 있습니다. 를 누르는 즉시 현재 행이 파일 끝에 기록됩니다 Enter. 데이터 입력을 중지하려면 Ctrl+D빈 줄을 누르세요.

이것은 분명히 한 번 누르면 이전 줄에 쓴 내용을 수정할 수 있는 기회를 제공하지 않습니다 Enter.

additions.txt또 다른 대안은 편집기를 사용하여 별도의 파일에서 새 줄을 편집하는 것입니다 . 해당 파일을 저장한 다음 수행하십시오.

cat additions.txt >>Entrie.txt

이렇게 하면 의 전체 내용이 additions.txt파일 끝에 추가됩니다 Entrie.txt.

관련 정보