一个自定义脚本命令生成器, 自动生成脚本或程序别名文件(alias xx=xxx), source自定义函数文件及其它脚本文件
- 示例(自动生成)
# alisa
alias calfind="/bin/zsh $CAL_HOME/shell/system/calfind.zsh"
alias calfind="/bin/zsh $CAL_HOME/shell/system/calgl.zsh"
# source
source $CAL_HOME/alias/system.alias
source $CAL_HOME/export/system.exp
source $CAL_HOME/func/process.func
- 合并命令
git clone https://github.com/calject/cal-shell.git && cd cal-shell && /bin/zsh ./calbuilder.zsh -v && source ~/.zshrc
- gif示例
/bin/zsh -c "$(wget https://raw.githubusercontent.com/calject/resources/master/cal-shell/install.zsh -O -)" && source ~/.zshrc
或者
/bin/zsh -c "$(curl -fsSL https://raw.githubusercontent.com/calject/resources/master/cal-shell/install.zsh)" && source ~/.zshrc
- gif示例
- clone项目到任意目录或者
fork
到自己的github账户,然后执行git clone
git clone https://github.com/calject/cal-shell.git
-
在项目目录下执行
/bin/zsh ./calbuilder.zsh && source ~/.zshrc
命令 -
执行完成后在任意位置执行
calbuilder
(可在calbuilder.conf
中修改该命令别名)构建
- 修复_md5函数在linux下未读取$1变量的bug
- 添加
[param]
[param]
: 添加脚本参数注释(格式[param] : 脚本参数 - 脚本参数描述
) 示例:[param] : $1 - 指定路径参数
-
tag
[arg]
: 添加命令参数(格式[arg] : 命令参数标识(单个字符) - 命令参数描述
) 示例:[arg] : v - 显示版本信息
[alt]
: 添加命令参数选项(格式[alt] : 命令参数选项(多个字符) - 命令参数选项描述
) 示例:[alt] : version - 显示版本信息
[txt]
: 添加命令参数列表(格式[txt] : 参数列表(多个参数)
) 示例:[txt] : version help add delete rm
[help]:
添加命令描述(格式[help] : 命令描述文本
) 示例:[help] : 这是一段命令描述
[alias]:
添加命令别名(格式[alias] : 命令别名字符串
) 示例:[alias] : calhelp
[boot]:
添加命令执行参数(格式[boot] : 执行参数
) 示例: xxx 命令需要ng用户权限执行[boot] : sudo -u nginx
, 生成命令alias xxx='sudo -u nginx /bin/zsh xxx.zsh''
-
可参考内建命令文件calfind.zsh的使用
# [boot] : sudo -u nginx
# [arg] : v - 显示进程
# [arg] : h - 显示帮助文档信息
# [alt] : version - 显示版本信息
# [alt] : help - 显示帮助信息
# [txt] : version help add delete rm
# [help] : 查找项目命令位置 calfind [command]
# [alias] : calhelp
[arg] : xxx
效果示例
[help] : xxx
效果示例
- -h
-c -- -c 清理脚本生成文件(默认为~/.cal-shell)
-h -- -h 帮助命令
-m -- -m MODEL, 创建model拓展(将在$CAL_HOME/plugins目录下创建)
-p -- -p HOME 设置生成脚本的存储路径(默认为~/.cal-shell)
-s -- -s (rsync)使用rsync管理同步到所有ssh连接上,scp文件传输
-t -- -t (git)使用Git管理同步到所有ssh连接上(需要配置服务器key到私有库上)
-v -- -v 设置显示执行过程
- 在
calbuilder.conf
中配置sync_xxx
项目 - 执行
calbuilder -s
(使用scp传输) 或calbuilder -t
(使用git管理,需要配置ssh key)命令同步
-
calbuilder -t
使用git管理项目(在各服务器s上t通过git更新项目) -
calbuilder -s
使用scp管理(从本机传输到各服务器上并执行calbuilder
命令构建) -
示例
- 在任意目录下编写脚本或其它文件
- 在
calbuilder.conf
配置中对应项目添加脚本路径shell
: shell、zshell脚本(示例脚本 $CAL_HOME/shell/system/*.zsh)alias
: alias 别名定义文件(示例文件 $CAL_HOME/alias/system.alias)export
: export 全局变量定义文件(示例文件 $CAL_HOME/export/system.exp)func
: function 函数定义文件(示例文件 $CAL_HOME/func/process.func)other
: 其它model拓展, 示例:php
脚本, models中加入php
,并取消php_*
注释后执行calbuilder
后可执行hello_php
命令执行示例脚本输出hello world php.
- (添加/修改)文件后,执行
calbuilder
后即可使用生成的脚本别名。- 脚本别名默认以脚本文件名为别名
- 例:
shell/system/calfind.zsh
帮助脚本别名命令为calfind
,在任意位置执行calfind [command]
即可执行
- 例:
- 若需要新的自定义别名,在文件中添加
# !alias=xxxx,xxx
,多个命令别名以英文,
号分割- 例:
shell/system/calfind.zsh
中已定义别名calhelp
,在任意地方执行calhelp [command]
效果与calfind [command]
命令相同
- 例:
- 脚本别名默认以脚本文件名为别名
[arg]
: 添加命令参数(格式[arg] : 命令参数标识(单个字符) - 命令参数描述
) 示例:[arg] : v - 显示版本信息
[alt]
: 添加命令参数选项(格式[alt] : 命令参数选项(多个字符) - 命令参数选项描述
) 示例:[alt] : version - 显示版本信息
[txt]
: 添加命令参数列表(格式[txt] : 参数列表(多个参数)
) 示例:[txt] : version help add delete rm
[help]:
添加命令描述(格式[help] : 命令描述文本
) 示例:[help] : 这是一段命令描述
[alias]:
添加命令别名(格式[alias] : 命令别名字符串
) 示例:[alias] : calhelp
[boot]:
添加命令执行参数(格式[boot] : 执行参数
) 示例: xxx 命令需要ng用户权限执行[boot] : sudo -u nginx
, 生成命令alias xxx='sudo -u nginx /bin/zsh xxx.zsh''
[param]
: 添加脚本参数注释(格式[param] : 脚本参数 - 脚本参数描述
) 示例:[param] : $1 - 指定路径参数
calbuilder.conf
文件
# ======== 项目配置参数 ========
# 生成文件夹路径及名称
home=~/.cal-shell
# 构建命令别名
s_command=calbuilder
# 生成资源文件名
s_name=cal-shell.sources
# ======== 同步服务器ssh配置 ========
# 不存在cal-shell项目是否clone项目(0: 关闭自动clone 1:开启自动clone) 默认关闭
sync_create=0
# clone项目地址,替换为自己的项目地址(使用ssh连接地址),示例(git@github.com:calject/cal-shell.git)
sync_project=git@github.com:calject/cal-shell.git
# clone项目路径,默认为(~)家目录下(注: 路径使用''标识字符)
sync_path='~'
# 待同步的ssh连接主机名(.ssh/config 下定义的Host, 例 api-a)
sync_host=()
# ======== model配置参数(拓展部分在后面加入对应的model,示例: models=(shell php python perl java),默认实现shell、alias、export、func、expand) ========
models=(shell alias export func)
# model配置参数(suffix: 文件规则参数; path: 扫描脚本路径参数)
types=(suffix path)
# ======== suffix(加载的文件规则可使用通配符[plugin仅支持后缀匹配*.xx或.zsh],示例: .sh *.sh *cal*.zsh *_plugin.sh ...) ========
shell_suffix=(*.h *.sh *.zsh)
alias_suffix=(*.alias)
export_suffix=(*.exp)
func_suffix=(*.func)
plugin_suffix=(*.plugin)
# expand_suffix=()
# ======== path(model扫描的文件或目录([.或者空]代表当前项目路径),示例: shell ./shell /Users/calject/shell ~/.shell ~/.shell/do.sh ...) ========
shell_path=(shell zsh)
alias_path=(alias)
export_path=(export)
func_path=(func)
plugin_path=(plugins)
# expand_path=()
# ======== plugin(拓展示例php脚本拓展[在models中加入php以开启]) ========
php_suffix=(*.php)
php_path=(php)
python_suffix=(*.py)
python_path=()
...