如何知道 CLI shell 有多少行代码?

如何知道 CLI shell 有多少行代码?

如何知道 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}'

相关内容