CLIシェルに何行のコードがあるかどうかはどうすればわかりますか?

CLIシェルに何行のコードがあるかどうかはどうすればわかりますか?

CLIシェルのコード行数(空白行を除く)をどうやって知ることができますか?

shこの質問の目的は、CLIシェルのコード行数を計算する方法を理解することですBash

カーネルが約1,500万行のコードであることを考えると、実際にカーネルと対話できるようにする2つのプログラムのコード行数が気になります。

答え1

最新バージョンの場合強く打つ、つまりbash v4.4、答えは134576です。私が使用するコマンドは

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

find . -name '*.[ch]'.corで終わるファイルを見つけることを意味します。 (ファイルもソースコードの一部であると仮定しますが、ファイルは計算しませ.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}'

関連情報