Как узнать, сколько строк кода в оболочке CLI?

Как узнать, сколько строк кода в оболочке CLI?

Как узнать, сколько строк кода имеется в оболочке CLI, не считая пустых строк?

Цель этого вопроса — узнать, как подсчитать строки кода для обеих оболочек: shи BashCLI.

Учитывая, что ядро ​​содержит около 15 миллионов строк кода, я был удивлен размеру строк кода для этих двух программ, позволяющих мне взаимодействовать с ядром.

решение1

Для последней версииБаш, т.е. bash v4.4, ответ 134576. Команда, которую я использую, это

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

find . -name '*.[ch]'означает поиск файлов, которые заканчиваются на .cили .h(не считая файлов .def, .poхотя я думаю, что это тоже часть исходного кода)

в, 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}'

Связанный контент