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

相關內容