다음을 포함하는 파일에 wc 명령을 실행하면 문자 수가 30개로 표시됩니다. 파일 끝 문자가 포함되어 있나요? 공백과 줄 바꿈을 포함하면 29자만 가능합니다.
Hello World
Again Hello World
출력은 다음과 같습니다
2 5 30 test
답변1
Unix 또는 Linux 파일 시스템에는 파일 끝 문자가 없습니다. 사용된 파일 설명자가 일반 파일을 참조하는 경우 시스템 read()
호출은 파일 끝 조건에서 0을 반환합니다. read()
소켓과 파이프에서는 다르게 작동합니다. 파일 끝을 표시하는 특수 문자가 없습니다.
wc
첫 번째 줄에는 줄 끝(ASCII 개행, 숫자는 0x0a)을 세는 12개의 문자가 있고 두 번째 줄에는 개행(일명 개행)을 세는 18개의 문자가 있으므로 문자 또는 바이트 수로 30을 제공합니다.
이 경우 개행 문자에 대한 0x0a 값을 표시하는 16진수 인쇄 출력이 ls -l
있거나 얻을 수 있으면 hexdump
문자 수를 다시 확인하는 데 사용할 수 있습니다 .xxd
C 표준 라이브러리 함수는 fgetc()
파일 끝에서 -1을 반환하지만 이는 Unix(또는 Linux)나 시스템 read()
호출을 통하지 않고 라이브러리 코드에서 수행됩니다.
답변2
파일의 바이트 수입니다. 매뉴얼 페이지를 참조하십시오.
다음은 5바이트 예입니다.
$ echo 1234 > foo.txt
$ od -ta foo.txt
0000000 1 2 3 4 nl
0000005
$ ls -l foo.txt
-rw-r--r-- 1 tim None 5 Feb 27 21:26 foo.txt
$ wc foo.txt
1 1 5 foo.txt
이제 빈 줄을 추가하세요:
$ echo >> foo.txt
$ ls -l foo.txt
-rw-r--r-- 1 tim None 6 Feb 27 21:29 foo.txt
$ wc foo.txt
2 1 6 foo.txt