CLI 셸에 몇 개의 코드 행이 있는지 어떻게 알 수 있나요?

CLI 셸에 몇 개의 코드 행이 있는지 어떻게 알 수 있나요?

빈 줄을 세지 않고 CLI 셸에 코드 행이 몇 개 있는지 어떻게 알 수 있나요?

sh이 질문의 목적은 두 쉘 과 BashCLI 쉘 모두에 대한 코드 행을 계산하는 방법을 배우는 것입니다 .

커널에 약 1,500만 행의 코드가 있다는 점을 감안할 때 커널과 인터페이스할 수 있게 해주는 이 두 프로그램의 코드 행 크기에 대해 궁금했습니다.

답변1

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

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

find . -name '*.[ch]'.c또는 로 끝나는 파일을 찾는다는 의미입니다 .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}'

관련 정보