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

jb - 用轻松的方式写脚本

  •  1
     
  •   thisismr2 ·
    txthinking · 2023-06-08 11:00:32 +08:00 · 1705 次点击
    这是一个创建于 541 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Bash 是一个很方便的脚本语言,但是当我们要写复杂的脚本时,考虑到心智负担和可维护性等,我们通常会考虑其他语言,比如 Python 。jb 是一个 javascript 和 bash 的结合体,bun port of zx 。jb 只是一个独立的二进制文件,所以只需要放到 PATH 里即可,当然用 nami 也可以安装。

    https://github.com/txthinking/jb

    shebang

    创建一个 script.js

    #!/usr/bin/env jb
    
    $`ls -l`
    
    var output = $1`whoami`
    $(`echo ${output}`)
    
    chmod +x ./script.js
    ./script.js
    

    jb

    jb ./script.js
    

    也可以执行远程脚本

    jb https://www.txthinking.com/script.js
    

    例子:写个简单的 brook linux 一键脚本

    #!/usr/bin/env jb
    
    // 检查 joker ,没有就安装
    if(!which('joker')){
        cp('https://github.com/txthinking/joker/releases/latest/download/joker_linux_amd64', '/usr/bin/joker')
    }
    // 检查 brook ,没有就安装
    if(!which('brook')){
        cp('https://github.com/txthinking/brook/releases/latest/download/brook_linux_amd64', '/usr/bin/brook')
    }
    
    echo(`
    1. 运行 brook server
    2. 运行 brook wsserver
    `)
    var answer = question(`选择要运行的编号:`)
    var sub = ''
    if(answer == 1){
        sub = 'server'
    }
    if(answer == 2){
        sub = 'wsserver'
    }
    
    var port = question(`输入监听的端口:`)
    var pass = question(`输入一个密码:`)
    
    $(`joker brook ${sub} --listen :${port} --password ${pass}`)
    
    13 条回复    2023-06-12 17:07:18 +08:00
    xiaokongwu
        1
    xiaokongwu  
       2023-06-08 16:19:24 +08:00
    兄弟你这工具名有点秀,以后就是:"你在写什么 jb ?"
    maggch97
        2
    maggch97  
       2023-06-08 17:55:33 +08:00 via Android
    呃呃,为什么不用 Python 。会写 bash 的人都会写 Python
    colom
        3
    colom  
       2023-06-08 19:45:55 +08:00
    "你的 jb 不行啊"
    cx2ex
        4
    cx2ex  
       2023-06-08 21:49:52 +08:00 via iPhone
    装个 jb
    Vb374IX98qjj2SgJ
        5
    Vb374IX98qjj2SgJ  
       2023-06-09 00:09:39 +08:00
    逆天的名字
    Al0rid4l
        6
    Al0rid4l  
       2023-06-09 03:58:02 +08:00
    tairan2006
        7
    tairan2006  
       2023-06-09 09:40:02 +08:00
    其实可以用 python 写完让 gpt 翻译成 bash
    LxnChan
        8
    LxnChan  
       2023-06-09 09:57:30 +08:00
    @maggch97 啊?真的假的 我会写 bash 但是不会写 Python (或者说没有深入接触过
    julyclyde
        9
    julyclyde  
       2023-06-09 12:46:36 +08:00
    啥叫 nami 呀
    thisismr2
        10
    thisismr2  
    OP
       2023-06-11 14:05:51 +08:00
    @Al0rid4l

    之前一直在用 zx ,jb 是 zx 的 port 。
    好处是不用安装 node 栈,jb 就是一个独立的二进制文件,放到 path 里就可以了
    还有就是 zx 需要 await $`ls -l`, jb 不需要 await ,直接 $`ls -l`
    thisismr2
        11
    thisismr2  
    OP
       2023-06-11 14:11:59 +08:00
    @julyclyde

    一个方便安装命令的工具,比如

    ```
    bash <(curl https://bash.ooo/nami.sh)
    ```
    ```
    nami install joker
    ```

    安装运行 brook

    nami install brook
    joker brook wsserver -l :20000 -p world

    安装运行 shadowsocks

    nami install shadowsocks
    joker ssserver -m aes-256-gcm -k hello -s 10.138.1.6:30000 -U --udp-timeout 60 --tcp-no-delay

    查看

    joker list
    julyclyde
        12
    julyclyde  
       2023-06-12 11:35:53 +08:00
    @thisismr2 nami 看着好像 brew 啊
    thisismr2
        13
    thisismr2  
    OP
       2023-06-12 17:07:18 +08:00
    @julyclyde nami 比较简单,只会在保存独立命令文件在 ~/.nami/bin ,不会写很多文件库到其他目录
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2640 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:54 · PVG 18:54 · LAX 02:54 · JFK 05:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.