首页 > 系统相关 >【SHELL】命令补全

【SHELL】命令补全

时间:2023-01-05 17:45:20浏览次数:43  
标签:SHELL grep 补全 docode dodo 命令 sed branch arg

 简易补全

#/usr/bin/env bash

# 'head -n 1' 展示grep结果的行数,从第一行开始
head_line=`grep -nw EOF /home/skull/work/scripts/docode |head -n 1 |awk -F : '{print $1}'`
# 'sed -n 2p' 展示grep结果的第2行数
tail_line=`grep -nw EOF /home/skull/work/scripts/docode |sed -n 2p |awk -F : '{print $1}'`
# 以空格分割,取第四列,sed限制行数
arg_complete=`cat /home/skull/work/scripts/docode |sed -n $head_line,${tail_line}p |awk '{print $4}'`
# 指定命令的补全参数
complete -W "$arg_complete" docode
cat <<EOF
************************************************************************************************************************
<<Usage>>
          Repo Init: docode init [branch_name] [manifest_xml]
         Sync Files: docode sync [fallback-depth]
         Switch XML: docode xml manifest_xml [fallback-depth]
      Compiler Code: docode make [delta] [ota] [tiny] [release] [copy] [product-name] [more]
     Generate .gapp: docode gapp [storyboard_module] [--help] [more]
    Build Simulator: docode simulator [delta]
      Copy Firmware: docode copy [ota] [only] [product-name]
   Statistic Modify: docode repo-diff
  Generate Diff-OTA: docode tiny
        View Branch: docode view-branch [-n] branch-name
      Switch Branch: docode switch-branch branch-search branch-switch branch-origin
************************************************************************************************************************
EOF

 

 二级补全

#/usr/bin/env bash

dodo_path=`find /home -iname dodo`

# 提取脚本文件中方括号内的命令
arg=`grep -n "usage: dodo" $dodo_path | grep -o '\[.*\]' |sed -e 's/\[//g'|sed -e 's/\]//g'`
echo $arg

# 以空格分割字符串转存至数组
OLD_IFS="$IFS"
IFS=" "
arg_array=($arg)
IFS="$OLD_IFS"

function define_complete {
    COMPREPLY=()
    case $COMP_CWORD in
        1)
        COMPREPLY=($(compgen -W "$arg" -- ${COMP_WORDS[COMP_CWORD]}))
        ;;
        2)
        [[ ${arg_array[@]} =~ ${COMP_WORDS[COMP_CWORD - 1]} ]] && {
            tput sc  # 保存光标当前位置
            # 以'dodo $cmd'为关键字检索提取脚本命令选项参数
            echo -e "\noption: "`grep -n "dodo ${COMP_WORDS[COMP_CWORD - 1]}" /home/skull/work/scripts/dodo | grep -o '\[.*\]' |sed -e 's/\[//g'|sed -e 's/\]//g'`
            tput rc  # 还原光标位置
        }
    esac
}

complete -F define_complete dodo
cat <<EOF
usage: dodo [init] [sync] [xml] [make] [gapp] [simulator] [copy] [diff] [tiny] [branch] [dircfg]

初始化代码仓库
dodo init [branch_name] [manifest_xml]
    branch_name         manifest仓分支,缺省则为master分支
    manifest_xml        要切换的xml配置文件,缺省则为huamiOS.xml

同步代码仓库
dodo sync [fallback-depth]
    fallback-depth      同步前净化代码仓的回滚深度,此参数可选

切换xml
dodo xml [manifest_xml] [fallback-depth]
    manifest_xml        要切换的xml配置文件
    fallback-depth      切换前净化代码仓的回滚深度,此参数可选

构建项目
dodo make [-d] [-o] [-t] [-r] [-m] [-v]
    -d  delta           增量编译
    -o  ota             ota升级包编译
    -t  tiny            制作差分包
    -r  release         release版本,缺省为debug版本
    -m  more            选择要构建的项目,缺省则在后面选择
    -v version          指定版本号,版本号卸载最后,缺省则为9.9.9

生成gapp工程
dodo gapp [module] [-c] [-m]
    module              指定要生成的gapp工程的模块
    -c  gapp module     选择要生成的gapp工程的模块
    -m  more            选择要构建的项目,缺省则在后面选择

编译模拟器
dodo simulator [-d]
    -d  delta           增量编译,缺省则为全编译

复制编译出的固件
dodo copy [-t] [-o] [product]
    -t  ota             复制ota升级固件到桌面对应项目文件夹
    -o  only            复制程序固件到对应项目烧录文件夹
    product             指定要复制到文件夹的项目名,缺省则在后面选择
    tips:               缺省选项则复制包括资源在内的固件包到对应项目文件夹

自定义固件存放的路径
dodo dircfg [path]
    path                指定配置文件存放的路径
    tips:               生成自定义固件存放的路径的配置文件,根据需求修改即可

检查代码仓变化
dodo diff
    tips:               检查仓内c/cpp/h文件修改情况,同时将结果写入文件repo.diff

制作差分包
dodo tiny [product]
    product             指定做差分包的产品,缺省则以上次编译的产品做
    tips:               项目生成的升级包与BACKUP文件夹中的升级包做差分包存至目录BACKUP/diff,同时将上传至桌面文件夹tiny

代码仓分支操作
dodo branch [-v] [-n] [branch]
    -v  view branch     查看代码仓指定分支的状态
    -n  exclude branch  查看代码仓排除指定分支的状态
    branch              分支名
dodo branch [-s] [search] [target] [origin]
    -s  switch branch   切换分支
    search              检索分支
    target              目标分支
    origin              远端分支,缺省则表示切分支
    tips                检索分支与目标分支相同,则重建分支,不同则切换分支

EOF

 

标签:SHELL,grep,补全,docode,dodo,命令,sed,branch,arg
From: https://www.cnblogs.com/skullboyer/p/17028387.html

相关文章

  • Jmeter BeanShell处理JSON响应
    一:Json响应如下:二:添加beanshell后置处理器  三:Json处理代码如下:importcom.alibaba.fastjson.*;publicstaticStringline_code_list(Stringjson_text){  ......
  • shell备份mysql数据库指定表
    1、先执行命令:netstat -ln |grep mysql获取当前mysql的socket  2、执行如下命令备份数据库的指定表mysqldump -hIP-P端口-u数据库用户-p数据库密码--sock=......
  • linux 中echo 命令输出感叹号
     001、直接使用双引号输出[root@pc1test2]#echo"helloworld!"##双引号输出感叹号报错-bash:!":eventnotfound  002、测试转义字符[root@pc1......
  • 基于Linux下的Ubuntu操作系统常用命令
    一 .linux操作系统的特点1、linux下一切皆文件2、linux系统就像一个倒置数3、linux系统支持多用户、多任务二.Ubuntu--“乌班图”操作系统Ubuntu是一个以桌面应......
  • crontab 命令详情
    安装crontabyuminstallcrontabs查看定时任务crontab-l设置定时任务crontab-e查看crontab状态systemctlstatuscrond.service启动crontabsystemctl......
  • IPython快捷键操作和魔术命令
    快捷键操作tab补全ctrl-c中断运行的代码ctrl-l清空屏幕ctrl-u删除当前行所有文本ctrl-p用当前输入的文本搜索之前的命令ctrl-n用当前输入的文本搜索之后的命......
  • 数据库alter基础命令
    数据库ALTER语句使用ALTER语句使用ALTER是数据库DDL语言的一部分,其操作对像主要是可以是表中的字段和索引,一般被用来修改上述对象的部分。1、操作表1.1表中增加列ALT......
  • linux 命令使用5--vmstat(内存)
    1.简介如果你想动态的了解一下系统资源的使用状况,以及查看当前系统中到底是哪个环节最占用系统资源,就可以使用 vmstat命令。vmstat命令,是VirtualMeomoryStatistics(......
  • shell基础代码_ $? -ne 0 和 >、  1>、 2>、2>&1、&> 详解
     if[$?-ne0]$? 表示上一条命令返回值,是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败.$0  表示第一个参数-ne表示不等于>、 ......
  • 一些常用命令
    1.查看当前IP地址:ifconfig|grepinet2.启动API:phpartisanserve--host=0.0.0.03.查看larval的命令:phpartisanlist4.开启docker,进入到对应文件夹docker......