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

如何有效的管理较少使用的 shell command

  •  
  •   AntiGameZ · 55 天前 · 3333 次点击
    这是一个创建于 55 天前的主题,其中的信息可能已经有所发展或是发生改变。
    平时有一些 shell 命令(比如用 curl 请求某个地址获取一个状态)。使用频率不高,可能几周才会用到一次。原本都是自己起个名字存为 alias。但是实际操作来看,虽然用 alias 命令是短了很多,但是因为用得少,忘的依旧快。

    现在土办法直接 local 存了一个文本文件去管理这些 shell 命令,统计了一下,大概有 300 来个不同的命令。

    如果 shell 里也有类似 Postman 一样的请求管理就好了,可以按照 collection 对不同的命令进行分类管理,要用的时候打开运行一下就行。目前我是 iTerm2 + zsh

    不知道大佬们有什么经验可以指教一下,谢谢。
    46 条回复    2020-02-16 13:18:20 +08:00
    msg7086
        1
    msg7086   55 天前 via Android
    不如写成脚本?然后可以分目录存放了,还能扔进源代码管理。
    AntiGameZ
        2
    AntiGameZ   55 天前
    @msg7086 是有这么做,但是最终问题变成一样的了。

    之前我是这么做的:
    * 一行的命令我给起个 alias
    * 复杂的命令,我给写成一个脚本保存为一个文件,再弄一个 alias 去调用他
    然后我就得到了一堆 alias。然后某天我想做某事的时候,只记得自己有这么一个 alias,但是具体是哪个还得查记事本。

    后来尝试把 alias 的名字按照下划线分割进行归类,比如 service_action_description 这种方式。这样做的好处就是搜历史记录以及联想的时候效率高一些,但是也还是没有解决根本问题。
    fuermosi777
        3
    fuermosi777   55 天前
    要是有一个轻型的运行在 menubar 的 command manager 软件就好了。需要运行时直接快速搜索回车复制或者 call terminal run。要是有时间我就自己写一个。但是没时间。
    charlie21
        4
    charlie21   55 天前 via iPhone
    sqlite
    msg7086
        5
    msg7086   55 天前
    我没听明白,为啥你都有脚本了还要写 alias ?
    AntiGameZ
        6
    AntiGameZ   55 天前
    @msg7086 可能我没说明白

    curl 请求一个地址是一条命令
    运行一个脚本也是一条命令

    我的目的是在想调用我想运行的命令 /脚本,并且尽可能有个树形结构可以方便的让我去浏览我有哪些脚本,而不是靠记忆或者查一个记事本,大概这样的一个需求。
    AntiGameZ
        7
    AntiGameZ   55 天前
    @fuermosi777 应该是有的,我之前用过一段时间 Paste,但是随着命令变得多了(比如我现在有 300 来个),就不是很好管理了,还不如记事本
    wzxlovesy
        8
    wzxlovesy   55 天前 via Android   ❤️ 3
    navi
    wzxlovesy
        9
    wzxlovesy   55 天前 via Android   ❤️ 2
    Livid
        10
    Livid   V2EX Moderator   55 天前 via iPhone   ❤️ 1
    可以用一个 CLI framework 写一个入口:

    https://docs.builtoncement.com/
    AntiGameZ
        11
    AntiGameZ   55 天前
    @wzxlovesy 谢谢

    @Livid 简单看了一下 Cement 的文档,感觉可行, 谢谢。
    wweir
        12
    wweir   55 天前 via Android
    subcommand prefix search
    reverse search
    Livid
        13
    Livid   V2EX Moderator   55 天前 via iPhone
    @AntiGameZ 用这样的框架包了之后,就可以用这种方式来找你想要的指令:

    --help|grep
    mrytsr
        14
    mrytsr   55 天前 via Android
    ctrl-r
    rayhy
        15
    rayhy   55 天前 via Android
    单行命令就一行行保存到一个文件里,用的时候用 fzf 搜一下并执行?
    conn4575
        16
    conn4575   55 天前 via Android
    我都是把这种语言自己写的一些小函数都放在一个 toolkit 的仓库里,要用的时候去复制黏贴
    Sainnhepark
        17
    Sainnhepark   55 天前 via Android
    我的解决方法是一个自己写的 tmux 插件,用 fzf 来管理 tmux. 有个 feature 就是自定义一堆命令,然后用 fzf 去选。

    https://github.com/sainnhe/tmux-fzf
    wupher
        18
    wupher   55 天前
    TextExpander 你可以就用 alias,然后分组,标签,说明,应该足够管理了吧。

    也可以用 gist 做 snippet 管理
    oneisall8955
        19
    oneisall8955   55 天前 via Android
    对于这种可以复制粘贴的,我都记录到 ditto 里面分组及备注关键字,设置禁止自动移出。有点问题的是这个同步略麻烦
    mcfog
        20
    mcfog   55 天前 via Android
    fzf 直接搜索 history 不就可以了( c-r )
    jorneyr
        21
    jorneyr   55 天前
    可以试试这个,分组管理命令,点击后在终端执行: http://fitztrev.github.io/shuttle/
    omph
        22
    omph   55 天前
    copyq
    有什么好用的命令或脚本可以分享一下啊~
    WittBulter
        23
    WittBulter   55 天前   ❤️ 1
    我写了一个从请求解析运行的 shell,其他的命令都放在 github 管理,这样本读只存一个命令。
    你可以参考一下 fork 自己玩: https://github.com/unix/want
    Chingim
        24
    Chingim   55 天前 via Android   ❤️ 1
    fzf
    终端内列出历史记录模糊搜索
    jessun1990
        25
    jessun1990   55 天前   ❤️ 1
    我能想到的有以下几种:

    1. 使用 fish shell,会自动补全历史命令。

    2. 使用 snippet lab 来存储 shell 命令

    3. 使用 mac 上的 paste 或者 linux 上的 copyq 之类的剪贴板工具存储 shell 命令
    hqs0417
        26
    hqs0417   55 天前   ❤️ 1
    alfred 上的 snippets
    vimsucks
        27
    vimsucks   54 天前 via Android   ❤️ 1
    markx
        28
    markx   54 天前
    我是用的 fzf 和 zsh 的 history-substring-search 来搜索历史,基本上够用了。
    rookiebulls
        29
    rookiebulls   54 天前 via iPhone
    试试 tldr
    AntiGameZ
        30
    AntiGameZ   54 天前
    @mrytsr
    @mcfog

    ctrl + r 或者模糊搜索的一个前提条件是大概知道搜什么。我手头的一个例子如果用 ctrl + r 就不大好对付:

    命令都是 curl,参数都一样,唯独请求的 url 不同。但是 url 十分相似,所以搜索的时候除非我提前知道自己是需要 curl + 某个特定 url 作为关键字,不然的话很难定位到。

    但是呢同样的需求在 Postman 里面就管理的很好。目前的想法还是得找一个或者自己写一个类似入口管理的东西,把脚本 /命令按照用途分类,有树形视图可以选择执行。
    mcfog
        31
    mcfog   54 天前 via Android
    @AntiGameZ 如果就是要加点别的关键字的话,加在#后面就行了
    aijam
        32
    aijam   54 天前
    alias alias='alias | less'
    aijam
        33
    aijam   54 天前
    @aijam 把这一行加入.bashrc。忘 alias 了,就输入 alias 查询下。
    Nick66
        34
    Nick66   54 天前
    我也是 iTerm2 + zsh,可以安装这个两个插件,命令很长不怕,输入一次就有记录,下次输入有提示 https://linux.hellocode.name/tool.html
    zthxxx
        35
    zthxxx   54 天前
    和这个帖子的需求很像 /t/623793

    可以试试 zsh-history-enquirer 这个工具

    https://github.com/zthxxx/zsh-history-enquirer
    Hoshizora
        36
    Hoshizora   54 天前 via Android
    alias 不是可以用 alias 命令看的吗,另外 zsh 有历史命令的插件,可以打一部分命令后以灰色显示历史命令,比如曾经输入过 git clone xxxx,那当输入 gi 的时候就会显示整条命令,按下 tab 或者方向右键就输入完了
    ooops
        37
    ooops   54 天前
    感觉 Alfred 的 Snippets 比较符合需求。
    ps1aniuge
        38
    ps1aniuge   54 天前
    @AntiGameZ 这个功能还有人需要么?我打算为楼主用 powershell 开发这个功能,每人众筹给我 5 毛钱即可!

    想要楼主说的功能的人,看过来,看过来:
    1 必须用 powershell。
    2 支持 win,linux,mac。
    3 纯中文,当然英文也可。
    4 可以光标上下选择,
    5 暂时不支持子菜单。
    6 预计是支持, [按快捷键] 呼出,功能的。

    愿意使用并掏钱的人,进来 mark 下,谢谢。
    Kobayashi
        39
    Kobayashi   54 天前 via Android
    直接补全历史,搜个关键词就完了。ZSH history-search-multi-word。
    UnknownR
        40
    UnknownR   54 天前
    写个汇总的 customalias,把你需要用到的 command 都写成一个个 method,再写个 help 的 property,每个 alias 都可以加上关键字,用法和描述之类的 property,这样你需要管理的就是这一个 customalias,用的时候用 help 看有哪些 method,直接用 grep 来滤关键字然后再调用方法来跑这个 command
    9
        41
    9   54 天前
    @rayhy
    @Sainnhepark
    @mcfog
    @Chingim
    @markx

    请教下,如果是管理多台机器,有什么方法可以在多台机器上都能用到 fzf 的能力?
    AntiGameZ
        42
    AntiGameZ   54 天前
    @Hoshizora alias 只是输出一个列表,无法对很多数量的 alias 进行归类。
    历史记录也需要起码使用的人知道一部分的关键字。但是因为我会需要用到很多低频率( 2,3 个月才用一次)的脚本,有时候可能根本连 keyword 都记不住,或者因为 keyword 太过于普通,导致搜出来的记录很多,从中挑选也很麻烦。
    alan0liang
        43
    alan0liang   54 天前 via Android
    我一般记住前几个字母然后直接输入之后用自动补全(打上键)
    jinliming2
        44
    jinliming2   53 天前 via iPhone
    .bash_profiles 里写一个 function
    fatestigma
        45
    fatestigma   53 天前
    我感觉我很多都是写在了 ~/bin 里,然后写上一些功能注释,最后用 rg 在整个文件夹里面搜注释或关键词。
    laxenade
        46
    laxenade   52 天前   ❤️ 1
    我之前也有这样的问题,后来我自己花了 2 天时间写了一个简单的 node 脚本来管理。基本思路是跑完一个脚本之后,立马把它存起来(例如 snippet save <名字> --tag <...> --description <...> !!),就我的 use case 来讲完全够用了。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4397 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:25 · PVG 11:25 · LAX 20:25 · JFK 23:25
    ♥ Do have faith in what you're doing.