linux shell 中可通过封装函数实现代码行数统计:①lines()统计单文件总行数;②loc()统计目录下某类文件总行数;③code_lines()过滤空行和注释行得有效代码行;④添加至~/.bashrc或~/.zshrc永久生效。

在 Linux Shell 中,“函数封装”不是编程语言里的函数定义,而是指把常用命令组合写成可复用的 shell 函数,方便快速调用。统计代码行数本身没有“内置函数”,但你可以自己定义一个快捷函数,让 wc -l、find、grep 等命令的行为更简洁、更贴合开发习惯。
一、基础单文件行数统计函数
适用于快速查看某个源码文件的总行数(含空行和注释):
lines() {
wc -l "$1" | awk '{print $1}'
}
使用方式:lines main.py → 输出纯数字,如 87。
说明:用 awk '{print $1}' 剥离文件名,只留行数;加引号避免空格路径出错。
二、目录下指定类型文件总行数函数
适合统计整个项目中某类代码文件(如 .py/.js/.c)的合计行数:
loc() {
local ext="${1:-py}"
find . -name "*.$ext" -type f -exec cat {} + 2>/dev/null | wc -l | awk '{print $1}'
}
使用方式:
• loc py → 统计当前目录及子目录所有 .py 文件总行数
• loc js → 统计所有 .js 文件
• loc(不带参数)→ 默认统计 .py
说明:2>/dev/null 屏蔽权限/编码错误提示;-type f 排除目录或符号链接干扰。
三、排除空行和纯注释行的“有效代码行”函数
更贴近真实开发场景——过滤掉空白行、全空格行、单行注释(如 // 或 #):
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
code_lines() {
local file="$1"
if [[ -f "$file" ]]; then
grep -v '^[[:space:]]*$' "$file" | grep -v '^[[:space:]#;\/]*$' | wc -l | awk '{print $1}'
else
echo "文件不存在: $file"
fi
}
说明:
• 第一个 grep 去掉全空白行(含空格、制表符)
• 第二个 grep 去掉以 #、;、// 开头且无实际内容的行
• 支持 .sh、.py、.cpp 等常见格式,对多行注释(如 /* */)需额外处理,建议用 cloc 替代
四、如何永久生效这些函数
把上面任一函数(或全部)添加到你的 shell 配置文件中:
-
~/.bashrc(Bash 用户) -
~/.zshrc(Zsh 用户)
添加后执行:source ~/.bashrc(或对应文件),即可在任意终端中直接使用 lines、loc、code_lines 等命令。
如果追求专业级统计(区分代码/注释/空行、支持 400+ 语言),推荐安装并直接使用 cloc:cloc . —— 它不是函数,但比任何 shell 封装都可靠。










