Wie kann man herausfinden, wie viele Codezeilen für eine CLI-Shell vorhanden sind?

Wie kann man herausfinden, wie viele Codezeilen für eine CLI-Shell vorhanden sind?

Wie kann man herausfinden, wie viele Codezeilen für eine CLI-Shell vorhanden sind, Leerzeilen nicht mitgezählt?

Der Zweck dieser Frage besteht darin, herauszufinden, wie ich die Codezeilen sowohl für als auch für CLI-Shells zählen shkann Bash.

Angesichts der Tatsache, dass der Kernel über etwa 15 Millionen Codezeilen verfügt, war ich erstaunt über die Größenordnung der Codezeilen für diese beiden Programme, die mir die Schnittstelle zum Kernel ermöglichen.

Antwort1

Für die neueste Version vonSchlag, also Bash v4.4, lautet die Antwort 134576. Der Befehl, den ich verwende, ist

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

find . -name '*.[ch]'.cbedeutet, Dateien zu finden, die mit oder enden (die , -Dateien .hnicht mitgezählt , obwohl ich glaube, dass sie auch Teil des Quellcodes sind).def.po

in, grep -v '^\s*$'(historische Anmerkung, Änderung der Form [\s*] in \s*),

  • -vdruckt nur die Zeilen, dienichtübereinstimmen
  • ^bedeutet Zeilenanfang
  • $bedeutet Zeilenende
  • \sbedeutet Leerzeichen einschließlich Leerzeichen, Tabulatoren, Zeilenvorschub

schließt also grep -v '^[\s]*$'Zeilen aus, die nur Leerzeichen enthalten, und wc -lzählt diese.

Da sind vieleSchQuellcodes, für UNIX v6 sh(https://etsh.io/history/sh.c). Es gibt nur 860 Zeilen.

Antwort2

Wenn ich das richtig verstanden habe, dann ist dein Freund der Befehl wc.

# cat example
passwd

group

# wc -l example
3 example

# grep -v "^$" example | wc -l
2

Oder nur mit grep:

# grep -c . example
2

Wenn mehrere Dateien vorhanden sind. Als Beispiel mit dem Bash-Quellcode.

# 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}'

verwandte Informationen