¿Cómo saber cuántas filas de código hay para un shell CLI?

¿Cómo saber cuántas filas de código hay para un shell CLI?

¿Cómo saber cuántas filas de código hay para un shell CLI, sin contar las líneas vacías?

El propósito de esta pregunta es aprender cómo puedo contar las filas de código para ambos shells shy BashCLI.

Dado que el kernel tiene alrededor de 15 millones de filas de código, me sorprendió la magnitud de las filas de código para estos 2 programas que me permiten interactuar con el kernel.

Respuesta1

Para la última versión deintento, es decir, bash v4.4, la respuesta es 134576. El comando que uso es

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

find . -name '*.[ch]'significa buscar archivos que terminen con .co .h(sin contar los archivos .def, .poaunque creo que también son parte del código fuente)

en, grep -v '^\s*$'(nota histórica, cambie la forma [\s*] a \s*),

  • -vimprime sólo las líneas que lo hacennofósforo
  • ^significa inicio de línea
  • $significa final de línea
  • \ssignifica espacios en blanco que incluyen espacio, tabulación, salto de línea

entonces grep -v '^[\s]*$'excluye las líneas que solo tienen espacios en blanco y wc -llas cuenta.

Hay muchosshcódigos fuente, para UNIX v6 sh(https://etsh.io/history/sh.c). Sólo hay 860 líneas.

Respuesta2

Si he entendido bien, entonces tu amigo es el comando wc.

# cat example
passwd

group

# wc -l example
3 example

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

O sólo con grep:

# grep -c . example
2

Si hay varios archivos. Como ejemplo con el código fuente de 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}'

información relacionada