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

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

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

    假设你有一个脚本名为 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 下就可以了吧
    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
        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   ·   实用小工具   ·   2559 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:32 · PVG 18:32 · LAX 02:32 · JFK 05:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.