在过去的几年里,我在工作中开发了很多有用的脚本和别名,它已经慢慢发展成为多个组织中许多人使用的工具链。
我已尽力记录这一点,但事情发展得太快了,我不断在不同的地方添加新的助手。
开发人员可以根据他们想要的帮助程序在他们的 *rc 中获取大约十几个不同的 bash 文件。
有些文件包含一堆小别名,如下所示:
alias a1="";
alias a2="";
alias a3="";
alias a4="";
有些文件包含更高级的帮助程序,如下所示:
function complex_helper {
ENV1=()
ENV2=0
while :; do
case $1 in
-h|-\?|--help)
show_help
HELP=1
break # Not calling exit here because it's a function and we want to keep the current shell open
;;
-i|--id)
ENV1+=("$2")
shift
;;
-t|--test)
ENV2=1
;;
--) # End of all options.
shift
break
;;
-?*)
printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
;;
*) # Default case: No more options, so break out of the loop.
break
esac
shift
done
# Some logic here
}
理想情况下,我希望实现以下目标:
- 有一个统一的cli命令来封装一切
- 能够输入 --help 并查看所有可用的命令。例如,如果我添加别名 a5,它也会显示
- 选项卡已完成
- 让其他人可以轻松添加自己的助手以及快速的“帮助”命令
过去,我开始制作一个 python 二进制文件,它将使用 argparser + tab 完成,并使用该os
模块来执行 bash 命令,并且我愿意重新审视这种方法。我也愿意进行任何必要的重构,只要它最终以可维护的长期方法结束。
我真的很期待社区提出任何有趣的建议或想法!