V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wl879
V2EX  ›  程序员

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

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

    项目地址: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 真的省事多了……
    lgpqdwjh
        13
    lgpqdwjh  
       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   ·   实用小工具   ·   913 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:47 · PVG 05:47 · LAX 13:47 · JFK 16:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.