Hello Shell 个人脚本管理工具,一个未完待续的想法,欢迎你 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wl879
V2EX    程序员

Hello Shell 个人脚本管理工具,一个未完待续的想法,欢迎你

  •  
  •   wl879
    wl879 2017-07-18 12:59:12 +08:00 4569 次点击
    这是一个创建于 3082 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址:https://github.com/wl879/HelloShell


    一切的开始

    作为一名程序猿,每个人都会有一些私家珍藏的脚本,来帮助完成自动化流程。但这些脚本并没有得到很好的管理,导致很多人经常重写一些常用的脚本,浪费了很多时间,最可怕的是,越是不管理的人,可能越是对脚本语言不熟悉,所以每次重写,也是重新学习的过程,例如我就是这样, 你又有没有同感。所以,为了让工作效率看起来不是太傻,那可能就需要一个脚本管理工具,来方便管理。

    举个例子,每次遇到,就觉得傻到爆

    ll 命令,常用但不是系统默认,每次重装系统或换了电脑,都要重新配置,又不是经常操作,忘的快,总不记得 alias 怎么写,就每次的问 google。 。

    满足简单的需求

    1. 可以很方便地创建脚本文件,一步链接到 bin 目录
    2. 提供常用的模板,工具,方便脚本开发
    3. 可以方便的备份脚本到 github,与恢复脚本。

    这里想求大家来帮助,尽可能满足通用的要求

    如果你觉得,你的脚本管理的也是一塌糊涂,并且觉得上面的需求你也有,并且更多,那么欢迎你加入到项目开发里。对没有说错,是邀请你来开发。我要承认,我的对写脚本并不是很好,只可算作初学者。所以,如果有你的加入,才能开发出一款真正有效的应用,如果你也是位初学者,也可把它当做是一次学习。

    帮助文档 (未完待续)

    安装

    - 使用 npm

    $ npm install helloshell -g 

    - 手动

    $ git clone https://github.com/wl879/HelloShell.git $ chmod 777 ./HelloShell/main.py $ ln -s "$(pwd)/HelloShell/main.py" /usr/local/bin/helloshell 

    命令参数说明

    1. 新建脚本到仓库中

    $ helloshell new name [-l [name]] 

    新建一个脚本,目前支持 bash/python 模板,参数 -l, --link 设置将脚本链接到 bin 目录下

    2. 对仓库进行管理

    $ helloshell repo [-d file] [-r github] [-b] [-u] 
    • -d, --dir 设置本地仓库路径

    • -r, --remote 设置 github 仓库地址

    • -b, --back 从 github 仓库恢复到本地

    • -u, --update 更新 github 仓库

    3. 将脚本安装到系统环境中

    $ helloshell link 

    4. 读写配置文件

    $ helloshell conf <file> [option [= value]] [--prefix name] 
    • option 输出选项变量
    • option=value 设置并输出变量
    • p, --prefix 设置输出变量名的前缀

    e.g.

    # 写入配置 $ helloshell conf test.ini name=wang sex=man name="wang"; sex="man"; # 读取配置 $ helloshell conf test.ini name="wang"; sex="man"; $ helloshell conf test.ini name name="wang"; 

    5. 解析参数

    $ helloshell args <file> [arguments] 

    解析参数为 shell 语法格式,以argv_为前缀

    **e.g. **

    将下例代码保存为 test.sh 文件, 读取 <file> 中以 "# HELP DOCUMENT" 为开始的注释段落

    #!/bin/sh # HELP DOCUMENT # # 参数: # -t, --text string 示例 # -h, --help 查看帮助 # eval "$(helloshell args $0 $*)" if [ $? != 0 ]; then echo "Argument Error:" echo $argv_errors exit 1 fi if [ $argv_help ]; then echo "${help_document}" exit 1 fi if [ $argv_text ]; then echo $argv_text fi 

    运行结果如下:

    $ test.sh --help 参数: -t, --text string 示例 -h, --help 查看帮助 
    $ test.sh -t "haha" haha 

    6. 彩色输出

    $ helloshell echo "#r[abcd]" $ echo "#b[abcd]" | helloshell 

    #r[] = 红色 / #g[] = 绿色 / #b[] = 蓝色 / #c[] = 蓝绿色 / #d[] = 灰色 / #w[] = 白色


    我的邮箱: [email protected]

    15 条回复    2017-07-19 15:10:49 +08:00
    ysicing
        1
    ysicing  
       2017-07-18 14:09:44 +08:00   1
    我将常用的脚本打成 deb 包了,需要的时候 apt install 一下哈
    wl879
        2
    wl879  
    OP
       2017-07-18 15:27:17 +08:00
    @ysicing 哈哈,我对脚本真是不太懂,你说的是一个办法,就像我说的,越是不管理的人,可能越是对脚本语言不熟悉的,所以就需要一个简单,好理解的管理方法。并且在 google 上搜了搜,没有找到与我想要的类似的,所以如果真的有这个需求的话,也是个很好项目吧。
    swulling
        3
    swulling  
       2017-07-18 15:31:41 +08:00
    越是不管理的人,可能越是对脚本语言熟悉的,因为命令都记住了,没必要 alias
    Rice
        4
    Rice  
       2017-07-18 15:38:59 +08:00 via iPhone
    脚本啊,用到忘记时,我都是直接去 gist 上搜。
    cxbig
        5
    cxbig  
       2017-07-18 17:10:35 +08:00   1
    自己有个私人的 repo 收集常用的 alias 和 function,走到哪 clone 下来,加载到 bashrc 或 zshrc 里就可以用了。
    minuux
        6
    minuux  
       2017-07-18 17:19:18 +08:00
    试试 ansible
    jyf007
        7
    jyf007  
       2017-07-18 17:30:21 +08:00
    putty-autoinput:{SPACE}{URL:HOST}{TAB}{URL:PORT}{ENTER}{DELAY 3000}{USERNAME}{ENTER}{ENTER}{DELAY 3000}{PASSWORD}{ENTER}
    ssh{SPACE}{USERNAME}@{URL:HOST}{SPACE}-p{SPACE}{URL:PORT}{ENTER}
    jyf007
        8
    jyf007  
       2017-07-18 17:31:22 +08:00
    dotfile 直接使用 syncthing 同步。
    lithium4010
        9
    lithium4010  
       2017-07-18 18:05:51 +08:00
    helloshell 名字太长了,换个短点的做命令更好
    wl879
        10
    wl879  
    OP
       2017-07-18 19:21:46 +08:00
    @lithium4010 我好像敲代码时,50% + 的时间都浪费上起名子上了,抽象出一个名字,比抽象出功能还难
    wl879
        11
    wl879  
    OP
       2017-07-18 19:27:34 +08:00
    @jyf007 dotfile 简单的研究了一下,不知是不是我没理解,dotfile 主要是备份配置文件的,没用管理脚本功能,而且配置又复杂
    FrankHB
        12
    FrankHB  
       2017-07-18 22:38:31 +08:00
    同 @cxbig,会有这个需求的一般都自己版本管理工具搞定了吧。而且 VCS 各个系统都有现成的包,基本上不用管安装源。
    @swulling 然而长短有别…… ll 比 ls -l --color=auto 真的省事多了……
    RealLiuSha
        13
    RealLiuSha  
       2017-07-19 09:24:37 +08:00
    所以说 想要被管理还得整个 node 咯, 过度轮
    pekingzcc
        14
    pekingzcc  
       2017-07-19 12:21:38 +08:00
    过度轮,脚本什么的写成 function,常用的 alias 等一块集成到 dotfile 里,放在 repo 中,随时 clone 就可以了。顺便不要脸的放一个自己 dotfile 的 repo: https://github.com/zhangchenchen/clean-dotfile
    lulinux
        15
    lulinux  
       2017-07-19 15:10:49 +08:00 via Android
    crontab 每天备份到另一个 hdd 硬盘。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3758 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 05:07 PVG 13:07 LAX 21:07 JFK 00:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86