一个有趣的 shell 脚本。可以将你的 shell 或 Python 脚本变为“内置“命令 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
davinci
V2EX    程序员

一个有趣的 shell 脚本。可以将你的 shell 或 Python 脚本变为“内置“命令

  •  
  •   davinci 2017-02-11 17:52:35 +08:00 6160 次点击
    这是一个创建于 3168 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设你有一个脚本名为 doSomething.sh 接收一个参数

    想要运行它需要

    $ cd /your/script/enclosing/folder $ ./doSomething.sh arg 或 $ source doSomething.sh arg 或 $ . doSomething.sh arg 

    运行该脚本后

    只需

    $ doSomething arg 

    即可。

    GitHub https://github.com/hijerusalem/custom-builtin-commands

    在 macOS 下可以运行,不知道在 Linux 下能不能运行。如果觉得不错欢迎 star ,有 bug 欢迎 issue

    第 1 条附言    2017-02-11 22:45:13 +08:00
    一个多月前,我开始准备我的毕业设计。为了简化一些繁琐的流程,我自学了一些 shell 编程的知识。这些脚本大概就是在那时候写的。今天把它放出来,没想到引来这么多人关注。正如标题的引号所示,这里的内置并不是真正的内置。大家的回复也让我学到了一些东西,如果还有知识性的补充,欢迎大家继续评论。
    40 条回复    2017-02-13 09:20:11 +08:00
    a87150
        1
    a87150  
       2017-02-11 18:02:04 +08:00
    环境变量?
    d33n99
        2
    d33n99  
       2017-02-11 18:05:33 +08:00
    有趣在哪里?
    knightdf
        3
    knightdf  
       2017-02-11 18:20:08 +08:00
    有趣在哪里?
    rashawn
        4
    rashawn  
       2017-02-11 18:26:42 +08:00 via iPhone
    ………
    我直接有个快捷键 把文件放到$HOME/bin 文件夹中 然后 chmod +x
    silymore
        5
    silymore  
       2017-02-11 18:31:03 +08:00 via Android
    ln 到 bin 下就可以了吧
    /tr>
    wohenyingyu02
        6
    wohenyingyu02  
       2017-02-11 18:34:55 +08:00 via iPhone
    ...
    davinci
        7
    davinci  
    OP
       2017-02-11 18:40:38 +08:00
    @rashawn 差不多。那个脚本包就是把移动文件,更改权限,制作,移除命令流程给简化了。省去一些敲键盘的时间。
    davinci
        8
    davinci  
    OP
       2017-02-11 18:44:37 +08:00
    @silymore 是的,我就是把一系列过程,给封装了一下。就觉得封装一下比较方便。
    aristotll
        9
    aristotll  
       2017-02-11 18:45:44 +08:00   5
    提个建议 源代码里面直接 chmod 777 真的好吗太粗暴了吧
    skydiver
        10
    skydiver  
       2017-02-11 18:46:32 +08:00 via Android
    ……
    neilp
        11
    neilp  
       2017-02-11 18:47:56 +08:00 via iPhone
    请告诉我哪里有趣了?
    davinci
        12
    davinci  
    OP
       2017-02-11 18:51:33 +08:00
    @aristotll 请问应该如何修改?
    davinci
        13
    davinci  
    OP
       2017-02-11 18:55:41 +08:00
    @d33n99 @neilp 这里的有趣是我个人感觉。前段时间,有学一点 shell 编程。在写这个脚本包的时候,融汇了许多我当时新学的知识,所以觉得比较有趣。把他公开出来,也是出于学习目的。
    beiping96
        14
    beiping96  
       2017-02-11 18:59:16 +08:00
    chmod 777
    。。。。。。
    SlipStupig
        15
    SlipStupig  
       2017-02-11 19:18:09 +08:00
    面向 star 编程......
    Ellison
        16
    Ellison  
       2017-02-11 19:18:32 +08:00
    你高兴就好
    CRVV
        17
    CRVV  
       2017-02-11 19:23:16 +08:00
    这不叫“内置命令”

    `cd` 这种不在 `$PATH` 里的才叫
    davinci
        18
    davinci  
    OP
       2017-02-11 19:31:58 +08:00
    @CRVV 所以我才在标题里加引号。我曾经看过 man cd
    loading
        19
    loading  
       2017-02-11 19:35:33 +08:00
    还好,脚本里面没有 rm -rf /
    233
    Vicer
        20
    Vicer  
       2017-02-11 19:48:33 +08:00 via Android
    没看到哪里有趣。
    jyf007
        21
    jyf007  
       2017-02-11 19:58:37 +08:00 via Android
    @SlipStupig 太暴力了,说的好,还不如 chmod a+x
    Kilerd
        22
    Kilerd  
       2017-02-11 20:14:33 +08:00 via iPhone
    看到那个驼峰命名,我就给差评。
    goodryb
        23
    goodryb  
       2017-02-11 20:37:14 +08:00
    楼主欺负我读书少?
    davinci
        24
    davinci  
    OP
       2017-02-11 20:40:11 +08:00
    @goodryb 是楼主读书少。对 shell 编程只知皮毛,来这献丑了
    Yeoman
        25
    Yeoman  
       2017-02-11 22:09:38 +08:00   1
    还在想什么黑科技能弄出 shell 内置命令呢
    aysi
        26
    aysi  
       2017-02-11 22:39:10 +08:00   1
    秀无知,必须差评
    kkk330
        27
    kkk330  
       2017-02-11 23:36:53 +08:00 via iPhone
    builtin 命令就那几个
    fatedier
        28
    fatedier  
       2017-02-12 00:23:10 +08:00   1
    支持一下,加油~
    fuxkcsdn
    &bsp;   29
    fuxkcsdn  
       2017-02-12 01:10:39 +08:00 via iPhone
    感觉楼主得考虑换个 ID 才能继续在 V2EX 上混了
    SharkIng
        30
    SharkIng  
       2017-02-12 02:23:57 +08:00 via iPhone
    ln -s /path/to/script /use/local/bin/
    zhidian
        31
    zhidian  
       2017-02-12 03:04:48 +08:00
    哈哈哈哈哈,我以前 sleep 5 && banner cool 都会觉得有趣 ==(好新奇 /novel ),哈哈哈哈哈。想想自己好逗啊 ==
    zhidian
        32
    zhidian  
       2017-02-12 03:08:47 +08:00
    我觉得 star 这个 repo 的人也会火 ==。
    param
        33
    param  
       2017-02-12 04:25:39 +08:00 via Android
    我在~下有一 bin 目,然後我把~/bin 加到 PATH 量
    lightening
        34
    lightening  
       2017-02-12 08:17:20 +08:00
    哈哈 虽然是最基础的知识,不过大家都是这样过来的 :-)
    zgqq
        35
    zgqq  
       2017-02-12 09:19:07 +08:00 via Android
    @zhidian 等下我就去 star ,火不了你赔钱
    shanks
        36
    shanks  
       2017-02-12 12:53:12 +08:00
    还是努力提高自己的姿势水平
    widewing
        37
    widewing  
       2017-02-12 13:55:10 +08:00 via Android
    这难道不是加个 path 的事吗?
    Doubear
        38
    Doubear  
       2017-02-12 14:11:02 +08:00
    你呀! naive!!!
    ryd994
        39
    ryd994  
       2017-02-12 14:18:20 +08:00
    这………………
    我一行能搞定
    echo "alias \"$1=$(pwd)/$1\" " >>~/.bashrc

    大概是这个意思,懂得明白个意思就好了

    其实呢,我自己是 PATH 加~/.local/bin
    然后常用的一些自己的脚本都在这里面
    nanpuyue
        40
    nanpuyue  
       2017-02-13 09:20:11 +08:00
    楼主还是要学习一个,提高自己的姿势水平。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1224 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 23:37 PVG 07:37 LAX 16:37 JFK 19:37
    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