Unix wc 명령의 문자 수

Unix wc 명령의 문자 수

다음을 포함하는 파일에 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

관련 정보