Como saber quantas linhas de código existem para um shell CLI?

Como saber quantas linhas de código existem para um shell CLI?

Como saber quantas linhas de código existem para um shell CLI, sem contar as linhas vazias?

O objetivo desta questão é aprender como eu poderia contar as linhas de código para ambos she Bashshells CLI.

Dado que o kernel tem cerca de 15 milhões de linhas de código, fiquei surpreso com a magnitude das linhas de código para esses 2 programas, permitindo-me interagir com o kernel.

Responder1

Para a versão mais recente dofesta, ou seja, bash v4.4, a resposta é 134576. O comando que uso é

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

find . -name '*.[ch]'significa encontrar arquivos que terminam com .cou .h(sem contar os arquivos .def, .poembora eu ache que também faz parte do código-fonte)

in, grep -v '^\s*$'(nota histórica, mude a forma [\s*] para \s*),

  • -vimprime apenas as linhas que fazemnãocorresponder
  • ^significa início de linha
  • $significa fim da linha
  • \ssignifica espaços em branco, incluindo espaço, tabulação, avanço de linha

portanto, grep -v '^[\s]*$'exclui linhas com apenas espaços em branco e wc -los conta.

Existem muitosehcódigos-fonte, para UNIX v6 sh(https://etsh.io/history/sh.c). Existem apenas 860 linhas.

Responder2

Se bem entendi, então seu amigo é o comando wc.

# cat example
passwd

group

# wc -l example
3 example

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

Ou apenas com grep:

# grep -c . example
2

Se houver vários arquivos. Por exemplo, com o código-fonte do 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}'

informação relacionada