Skip to content

基于zsh编写的自定义脚本管理项目(通过编写拓展支持任意语言命令生成)

License

Notifications You must be signed in to change notification settings

calject/cal-shell

Repository files navigation

cal-shell

项目说明

一个自定义脚本命令生成器, 自动生成脚本或程序别名文件(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示例

Image text

安装二 (由于githubusercontent.com被屏蔽,需要科学上网)

/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示例

Image text

安装三 (补充)

  1. clone项目到任意目录或者fork到自己的github账户,然后执行git clone
git clone https://github.com/calject/cal-shell.git
  1. 在项目目录下执行/bin/zsh ./calbuilder.zsh && source ~/.zshrc命令

  2. 执行完成后在任意位置执行calbuilder(可在calbuilder.conf中修改该命令别名)构建

版本更新说明

v1.2.1

  • 修复_md5函数在linux下未读取$1变量的bug
  • 添加[param]
    • [param]: 添加脚本参数注释(格式 [param] : 脚本参数 - 脚本参数描述) 示例: [param] : $1 - 指定路径参数

v1.2 (添加相关tag注释自动生成[代码补全、帮助文档、命令参数等]功能)

  • 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效果示例

Image text

  • [help] : xxx效果示例

Image text

v1.1 (添加自动同步功能 [-s|-t])

  • -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 设置显示执行过程
  1. calbuilder.conf中配置sync_xxx项目
  2. 执行calbuilder -s(使用scp传输) 或 calbuilder -t(使用git管理,需要配置ssh key)命令同步
  • calbuilder -t 使用git管理项目(在各服务器s上t通过git更新项目)

  • calbuilder -s 使用scp管理(从本机传输到各服务器上并执行calbuilder命令构建)

  • 示例

Image text

使用说明

  1. 在任意目录下编写脚本或其它文件
  2. 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.

Image text

  1. (添加/修改)文件后,执行calbuilder后即可使用生成的脚本别名。
    • 脚本别名默认以脚本文件名为别名
      • 例: shell/system/calfind.zsh帮助脚本别名命令为calfind,在任意位置执行calfind [command]即可执行
    • 若需要新的自定义别名,在文件中添加# !alias=xxxx,xxx,多个命令别名以英文,号分割
      • 例: shell/system/calfind.zsh中已定义别名calhelp,在任意地方执行calhelp [command]效果与calfind [command]命令相同

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''
  • [param]: 添加脚本参数注释(格式 [param] : 脚本参数 - 脚本参数描述) 示例: [param] : $1 - 指定路径参数

内置命令

calfind|calhelp 查找项目生成的alias命令或function

Image text

cdcal 切换到项目目录下(cd $CAL_HOME)

sourbash ===> (source ~/.bash_profile)

sourzshrc ===> (source ~/.zshrc)

vimbash ===> (vim ~/.bash_profile)

vimzshrc ===> (vim ~/.zshrc)

  • 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=()

plan

v1.3 (待定...)

...

About

基于zsh编写的自定义脚本管理项目(通过编写拓展支持任意语言命令生成)

Resources

License

Stars

Watchers

Forks

Packages

No packages published