CLIシェルのコード行数(空白行を除く)をどうやって知ることができますか?
sh
この質問の目的は、CLIシェルのコード行数を計算する方法を理解することですBash
。
カーネルが約1,500万行のコードであることを考えると、実際にカーネルと対話できるようにする2つのプログラムのコード行数が気になります。
答え1
最新バージョンの場合強く打つ、つまりbash v4.4、答えは134576です。私が使用するコマンドは
find . -name '*.[ch]' | xargs grep -v '^\s*$' | wc -l
find . -name '*.[ch]'
.c
orで終わるファイルを見つけることを意味します。 (ファイルもソースコードの一部であると仮定しますが、ファイルは計算しませ.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}'