CLI シェルのコード行数が何行あるかを知るにはどうすればよいでしょうか?

CLI シェルのコード行数が何行あるかを知るにはどうすればよいでしょうか?

空行を除いた CLI シェルのコード行数が何行あるかを知るにはどうすればよいでしょうか?

この質問の目的は、shBashCLI シェルの両方のコード行をカウントする方法を学ぶことです。

カーネルには約 1,500 万行のコードがあるため、カーネルとのインターフェースを可能にするこれら 2 つのプログラムのコード行数の大きさに驚きました。

答え1

最新バージョンについてはバッシュつまりbash v4.4の場合、答えは134576です。私が使用するコマンドは

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

find . -name '*.[ch]'.cまたはで終わるファイルを検索することを意味します( ,ファイルは.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}'

関連情報