Как узнать, сколько строк кода имеется в оболочке CLI, не считая пустых строк?
Цель этого вопроса — узнать, как подсчитать строки кода для обеих оболочек: sh
и Bash
CLI.
Учитывая, что ядро содержит около 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}'