Para a versão mais recente do bash , ou seja, bash v4.4, a resposta é 134576. O comando que eu uso é
find . -name '*.[ch]' | xargs grep -v '^\s*$' | wc -l
find . -name '*.[ch]' significa localizar arquivos que terminem com .c ou .h (sem contar os arquivos .def , .po , embora eu também ache que é parte do código-fonte)
em, grep -v '^\s*$' (nota histórica, formulário de alteração [\ s *] para \ s *),
-
-vimprime apenas as linhas que não correspondem -
^significa início de linha -
$significa fim da linha -
\ssignifica espaços em branco, incluindo espaço, tabulação, avanço de linha
, então grep -v '^[\s]*$' exclui linhas que têm apenas espaços em branco e wc -l as conta.
Existem muitos códigos-fonte sh , para UNIX v6 sh ( link ). Existem apenas 860 linhas.