QALI (Quick Aliasing): 用 Rust 实现了个命令简写和脚本管理工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
JettChen
V2EX    分享创造

QALI (Quick Aliasing): 用 Rust 实现了个命令简写和脚本管理工具

  •  
  •   JettChen
    JettChenT 2022-08-30 15:56:03 +08:00 2171 次点击
    这是一个创建于 1139 天前的主题,其中的信息可能已经有所发展或是发生改变。

    具体安装与操作方式请见 github 以及演示

    我编写该工具主要是为了解决个人平常命令行中遇到的以下问题:

    1. 较长的指令输入麻烦 /记不住 eg. tar -xvf.....
    2. 可以通过 alias {a}={b} 快速缩短指令,不过是在 session 内暂时储存的
    3. 可以通过编辑 .zshrc, .bashrc 等设置,但是删、查、改以及迁移(eg. bash->zsh) 极为不方便
    4. 想要全局访问自己写的 python/shell 脚本有点复杂,且不好维护
    5. 在系统的命名空间设置 alias 以及添加自己的程序时容易和系统已有的指令冲突 (参考 start all your commands with comma )

    QALI 包含两个指令: q(常用操作) 和 qali(管理操作),并解决了以上每个问题:

    1. eg. q -s untar "tar -xvf" 设置简写,并使用 q untar {文件名} 快速运行指令
    2. qali 将命令简写储存在本地文件夹内,不会丢失
    3. qali list 查看所有假名; qali remove 删除假名; qali select 通过 fuzzy select 查找指令
    4. eg. q -s hi ./hello.py :自动识别 Python 脚本,并可以在任意地点通过 q hi 全局执行脚本 (目前还支持 shell)
    5. 在 QALI 里面设置的命令不会和系统命名空间冲突,q {...} 命名空间有且仅有用户自己设置的命令简写

    写这个工具的同时也发现 github 上面有一些功能类似的项目,以下是一个对比:

    • navi: 侧重于使用他人写的 cheatsheets, 要通过手动编辑文件管理指令
    • espanso: 功能非常全面,也支持添加脚本,要通过手动编辑文件管理指令且使用图形界面
    • zsh-abbr: 包含了快速的设置和执行功能,但是没有自己的 namespace, 且只支持 zsh

    欢迎各位在下方评论提建议以及在github上合作!

    7 条回复    2022-09-02 18:22:40 +08:00
    lingly02
        1
    lingly02  
       2022-08-30 16:12:03 +08:00
    不错,我建议在输完 q untar 之后,打空格或 tab 自动展开为 tar -xvf
    JettChen
        2
    JettChen  
    OP
       2022-08-30 18:56:08 +08:00
    @lingly02 ok 谢谢~ 系统 API 允许的话是可以加这个功能。
    lllllliiii
        3
    lllllliiii  
       2022-08-30 19:52:48 +08:00
    这个好像跟 shell 的 completion 有关系。
    masker
        4
    masker  
       2022-08-30 20:04:50 +08:00 via Android
    写一个直接管理当前 alias 的不就好了吗
    JettChen
        5
    JettChen  
    OP
       2022-08-30 20:29:53 +08:00
    @masker 没有直接管理当前的是考虑到会和系统的 namespace 冲突,以及后面得要可扩展性地加入更多运行时执行的功能。
    Alan3
        6
    Alan3  
       2022-09-02 10:46:34 +08:00
    Bug:Centos 7 , "Select an alias" 的时候 Ctrl+C 退出后,shell 光标会消失,使用 `echo -e "\033[?25h"`后恢复。
    encro
        7
    encro  
       2022-09-02 18:22:40 +08:00
    alias 解决了我的问题,
    zsh 插件我都研究不过来了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     927 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:38 PVG 06:38 LAX 15:38 JFK 18:38
    Do have faith in what you're doing.
    ubao 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