如何知道 CLI shell 有多少行代码(不包括空行)?
sh
这个问题的目的是了解如何计算CLI shell的代码行数Bash
。
鉴于内核有大约 1500 万行代码,我确实对这两个让我与内核交互的程序的代码行数量感到好奇。
答案1
对于最新版本巴什,即bash v4.4,答案是134576。我使用的命令是
find . -name '*.[ch]' | xargs grep -v '^\s*$' | wc -l
find . -name '*.[ch]'
.c
意味着查找以or结尾的文件.h
(不计算.def
,.po
文件,尽管我认为它也是源代码的一部分)
在,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}'