dir=/rom; a=$(find $dir -name \*.sh -exec cat '{}' \; | egrep -cv '^[[:space:]]*#'); b=$(find $dir -name \*.sh -exec cat '{}' \; | egrep -c '^[[:space:]]*#'); echo $((a+b)) lines = ${a} sloc [$((a*100/(a+b)))%] + ${b} comments [$((b*100/(a+b)))%]
Команда выполняет следующие действия:
1. Создает переменную «dir» и присваивает ей значение «/rom».
2. Используя команду «find», находит все файлы с расширением «.sh» в директории, указанной в переменной «dir».
3. С помощью команды «cat» считывает содержимое каждого найденного файла и передает его вводу команды «egrep».
4. Команда «egrep» фильтрует строки, исключая строки, начинающиеся с пробела и знака «#». С помощью опции «-cv» подсчитывается количество строк, не содержащих комментарии (SLOC — source lines of code).
5. Аналогично, с помощью опции «-c», подсчитывается количество строк, содержащих только комментарии.
6. С помощью команды «echo» выводится общее количество строк (SLOC + комментарии), а также процентное соотношение SLOC и комментариев.
Эта команда полезна для определения плотности комментариев в скриптах оболочки Linux в определенной директории. Вывод команды позволяет узнать количество строк кода и комментариев, а также процентное соотношение SLOC и комментариев. Альтернативным способом может быть использование инструментов для статического анализа кода или IDE с поддержкой анализа кода. Передаваемым команде аргументом является значение переменной «dir», которое определяет директорию, в которой будет производиться поиск файлов со скриптами оболочки.
