CLI 셸에 있는 코드 줄 수(빈 줄 제외)를 어떻게 알 수 있나요?
sh
이 질문의 목적은 CLI 쉘의 코드 줄 수를 계산하는 방법을 이해하는 것입니다 Bash
.
커널이 약 1,500만 줄의 코드라는 점을 감안할 때 실제로 커널과 상호 작용할 수 있게 해주는 두 프로그램의 코드 줄 수가 궁금합니다.
답변1
최신 버전의 경우세게 때리다, 즉 bash v4.4, 대답은 134576입니다. 내가 사용하는 명령은
find . -name '*.[ch]' | xargs grep -v '^\s*$' | wc -l
find . -name '*.[ch]'
.c
or로 끝나는 파일을 찾는 것을 의미합니다. ( 파일도 소스 코드의 일부라고 가정하지만 파일은 계산 .h
하지 않음 ).def
.po
in, grep -v '^\s*$'
(기록, [\s*] 형식을 \s*로 변경),
-v
이 작업을 수행하는 줄만 인쇄아니요성냥^
줄의 시작을 나타냅니다.$
줄의 끝을 나타냅니다.\s
공백, 탭, 줄바꿈을 포함한 공백을 나타냅니다.
따라서 grep -v '^[\s]*$'
공백만 있는 줄을 제외하고 wc -l
개수를 계산하세요.
많이있다쉿UNIX v6 sh의 소스 코드(https://etsh.io/history/sh.c). 라인 수는 860개에 불과합니다.
답변2
내가 올바르게 이해했다면 당신의 친구는 wc 명령입니다.
# cat example
passwd
group
# wc -l example
3 example
# grep -v "^$" example | wc -l
2
아니면 그냥 grep을 사용하세요:
# grep -c . example
2
파일이 여러개 있는 경우. Bash 소스 코드를 예로 들어 보겠습니다.
# wget -c https://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz
# tar xfvz bash-4.4.tar.gz
# grep -R -c . bash-4.4/ | awk -F : '{sum += $2} END {print sum}'