Linux Shell函数无内置帮助机制,需通过内嵌_help变量、统一help函数、# HELP注释或生成man页等方式提供帮助信息。

Linux Shell 函数本身不内置帮助文档机制(如 Python 的 docstring 或 man 手册页),但可以通过约定俗成的方式为函数添加可读、可查的帮助说明,让使用者快速理解用途、参数和用法。核心思路是:把帮助文本“藏”在函数内部或附近,并提供统一入口调用显示。
在函数体内嵌入帮助字符串
用注释块或变量存储帮助内容,调用时按需输出。推荐使用 here-document 或多行注释风格,清晰易维护:
- 定义一个以 _help_ 开头的变量或注释段,例如:
my_backup() {<br> local _help="Usage: my_backup <src><dst><br> Backup a directory with timestamped archive.<br> Options:<br> -v verbose mode<br> -h show this help";<br> if [[ "$1" == "-h" || "$1" == "--help" ]]; then echo "$_help"; return 0; fi<br> # 实际逻辑...<br>}</dst></src> - 避免用 # 注释行拼接帮助——不易对齐、难提取;优先用带缩进的字符串变量,保持格式整洁。
统一帮助入口:help 命令支持
为整个脚本设计一个 help 函数,集中管理所有自定义函数的帮助信息。用户执行 help my_backup 即可查看对应说明:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 在脚本开头定义通用 help 函数,用 case 匹配函数名:
help() {<br> case "$1" in<br> my_backup) echo "Backup dir with tar+date";;<br> show_system_info) echo "Print hostname, date, uptime";;<br> *) echo "Available: my_backup, show_system_info";;<br> esac<br>} - 配合
compgen -A function动态列出所有已定义函数,实现help(无参数)时自动展示全部函数名及简要描述。
与 shell 内置 help 机制联动
若希望函数像内置命令一样响应 help 函数名,需确保函数在交互式 shell 中已加载,并借助 help 的 -m 选项(仅限 bash 4.4+)或 alias 模拟:
- 简单方式:用 alias 绑定帮助输出,例如
alias help_my_backup='echo "Usage: my_backup(creates .tar.gz with timestamp)"' - 更规范做法:将函数定义放入
.bashrc,再在help内置命令中注册说明(需修改help的 helpfiles 目录,较重,一般不推荐)。 - 实用建议:直接在函数第一行加
# HELP: ...注释,再写个简单脚本扫描源码提取这类行,生成简易帮助手册。
生成 man 手册页(进阶)
对长期使用的工具函数,可为其生成真正的 man 页面:
- 编写 roff 格式 man 手册(如
my_backup.1),包含 NAME、SYNOPSIS、DESCRIPTION、OPTIONS 等标准节; - 用
gzip my_backup.1压缩后放入/usr/local/man/man1/; - 运行
mandb更新数据库,之后即可执行man my_backup查看。 - 注意:该方式适合已打包部署的脚本或函数库,不适合临时调试用的函数。










