CLI 셸에 몇 줄의 코드가 있는지 어떻게 알 수 있나요?

CLI 셸에 몇 줄의 코드가 있는지 어떻게 알 수 있나요?

CLI 셸에 있는 코드 줄 수(빈 줄 제외)를 어떻게 알 수 있나요?

sh이 질문의 목적은 CLI 쉘의 코드 줄 수를 계산하는 방법을 이해하는 것입니다 Bash.

커널이 약 1,500만 줄의 코드라는 점을 감안할 때 실제로 커널과 상호 작용할 수 있게 해주는 두 프로그램의 코드 줄 수가 궁금합니다.

답변1

최신 버전의 경우세게 때리다, 즉 bash v4.4, 대답은 134576입니다. 내가 사용하는 명령은

find . -name '*.[ch]' | xargs grep -v '^\s*$' | wc -l

find . -name '*.[ch]'.cor로 끝나는 파일을 찾는 것을 의미합니다. ( 파일도 소스 코드의 일부라고 가정하지만 파일은 계산 .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}'

관련 정보