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.

관련 정보