开源最前线(ID:OpenSourceTop) 猿妹整编

项目地址:https://github.com/google/zx

大家都知道Bash很好用,但是在编写脚本时,人们通常会选择一种更方便的编程语言,比如JavaScript,但是Node.js库在使用之前还需要许多额外的操作,整体来说还是不够方便,最近谷歌开源了一个能够帮助开发者快速编写脚本的工具——ZX,短短几天就登上了Github热榜。

ZX的安装十分简单:

npm i -g zx

接下来,你需要将你的脚本编写在带有.mjs扩展名的文件中,以便能够await在顶层使用。如果你喜欢.js扩展名,可以将脚本包装为void async function () {...}()。

将以下shebang添加到zx脚本的开头:

#!/usr/bin/env zx

现在,你将能够像这样运行脚本:

chmod +x ./script.mjs
./script.mjs

或通过zx可执行文件:

zx ./script.mjs

常用命令举例

使用child_process包中提供的exec函数可以把字符串当做命令执行,并返回Promise<ProcessOutput>对象。

let count = parseInt(await $`ls -1 | wc -l`)
console.log(`Files count: ${count}`)

例如,要并行上传文件:

let hosts = [...]
await Promise.all(hosts.map(host =>$`rsync -azP ./src ${host}:/var/www`
))

如果执行的程序返回一个非零的退出代码, 将会抛出ProcessOutput对象:

try {await $`exit 1`
} catch (p) {console.log(`Exit code: ${p.exitCode}`)console.log(`Error: ${p.stderr}`)
}

ProcessOutput

class ProcessOutput {readonly exitCode: numberreadonly stdout: stringreadonly stderr: stringtoString(): string
}

cd(),更改当前工作目录

cd('/tmp')
await $`pwd` // outputs /tmp

fetch(),对node-fetch包的包装:

let resp = await fetch('http://wttr.in')
if (resp.ok) {console.log(await resp.text())
}

question(),对readline包的包装:

type QuestionOptions = { choices: string[] }function question(query?: string, options?: QuestionOptions): Promise<string>

用法:

let username = await question('What is your username? ')
let token = await question('Choose env variable: ', {choices: Object.keys(process.env)
})

sleep(),setTimeout函数的包装。

function sleep(ms: number): Promise<void>

用法:

await sleep(1000)

chalk包,该包直接可用无需导入内部脚本:

console.log(chalk.blue('Hello world!'))

执行远程脚本,如果zx可执行文件的参数以开头https://,则将下载并执行该文件。

console.log(chalk.blue('Hello world!'))

最后,附上ZX在Github上的项目地址:https://github.com/google/zx

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

  • 1).卧槽!Pdf转Word用Python轻松搞定!

  • 2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

  • 3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密

  • 4).80行代码!用Python做一个哆来A梦分身

  • 5).你必须掌握的20个python代码,短小精悍,用处无穷

  • 6).30个Python奇淫技巧集

  • 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

  • 8).再见Python!我要学Go了!2500字深度分析!

  • 9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

点阅读原文,领AI全套资料!

一经开源就爆了!谷歌这个脚本工具注定要火相关推荐

  1. GitHub日收7000星,Windows计算器项目开源即爆红!

    说起此番微软开源 Windows 计算器,有道是"春风得意马蹄疾,一日'摘星' 7000+"-- 整理 | 仲培艺 来源 | CSDN(ID:CSDNnews) 微软又来给自己拥抱 ...

  2. 程序员计算器_GitHub 日收 7000 星,Windows 计算器项目开源即爆红!

    说起此番微软开源 Windows 计算器,有道是"春风得意马蹄疾,一日'摘星' 7000+"-- 微软又来给自己拥抱开源的决心送"证明素材"了! 昨日,微软官宣 ...

  3. 谷歌为什登不上去github_安卓开源是假的,谷歌随时禁用,华为手机在海外市场已经快跌没了...

    安卓系统是开源的,为什么谷歌可以禁用安卓?首先,虽然安卓开源,但安卓不算是全球程序员共同劳动的成果,安卓应该算是谷歌的亲儿子,这个和Linux这种开源不一样,说白了只是安卓免费给智能手机制造商使用而已 ...

  4. GitHub 日收 7000 星,Windows 计算器项目开源即爆红!

    说起此番微软开源 Windows 计算器,有道是"春风得意马蹄疾,一日'摘星' 7000+"-- 微软又来给自己拥抱开源的决心送"证明素材"了! 昨日,微软官宣 ...

  5. github windows系统监控_GitHub日收7000星,Windows计算器项目开源即爆红!

    说起此番微软开源 Windows 计算器,有道是"春风得意马蹄疾,一日'摘星' 7000+"-- 整理 | 仲培艺 来源 | CSDN(ID:CSDNnews) 微软又来给自己拥抱 ...

  6. 百万千万爆款视频的脚本是怎么写出来的?两套模板教你做同款

    那些百万千万爆款视频的脚本是怎么写出来的?两套模板教你做同款. 每天都能刷到百万赞的短视频,看看自己的视频点赞量,失落是一种感觉,其实你也可以做出优秀的爆款文案. 今天给大家介绍两种短视频脚本模板,大 ...

  7. 黑科技“测试猫”-史上最强大、最简单的移动端开源自动化测试脚本工具

    测试猫是在Github开源的的测试脚本开发工具,绿色功能强大,能够帮助自动化测试人员迅速编写测试脚本,解放双手,完全自动化运行脚本. 相比其他自动化测试脚本工具,测试猫具有以下优势: 实时操控: 自研 ...

  8. 演讲类或观点类的爆款短视频脚本是怎样写出来的?模板分享

    演讲类或观点类的爆款短视频脚本是怎样写出来的?模板分享 今天刷到一个讲全职妈妈价值的短视频,点赞量近千万,拆解分析了一下. 加上最近在我赢助手小禾呈序学到的观点类短视频脚本文案的模板,分析给大家看看: ...

  9. Google开源word2vec,文本相似度计算工具

    Google开源word2vec,文本相似度计算工具 谷歌已经使用Deep Learning技术开发了许多新方法来解析语言,目前,谷歌开源了一款基于Deep Learning的学习工具--word2v ...

最新文章

  1. Java 正则表达式验证小结
  2. 微软表示Edge的性能更优于Chrome和Firefox
  3. 访问centos端口
  4. linux内核之accept实现
  5. Apple`s Steve Jobs Has Reshaped(重塑) the Tech World: 10 Ways He Did It
  6. 背包——完全背包Warcraft III(哈理工1053)
  7. jsp怎么调用servlet_Servlet简述
  8. node.js应用生成windows server的plugin——winser
  9. Spring boot (2)--- 基础
  10. 罗永浩:比起悲剧英雄 我更喜欢被当成失败的小丑
  11. Eclipse install new software 失败 解决方案
  12. C++ mmap 多进程文件读写
  13. 8081端口被nexus占用的情况如何解决
  14. 基于免费的SDCC开发51单片机
  15. 正六面体染色(java)
  16. java d打字游戏_练习--java实现的打字游戏
  17. 城市“智慧发展”的核心是人性化
  18. ECMAScript 6 字符串和数值的拓展
  19. c语言19之用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案
  20. 腾讯AI Lab「王者绝悟」亮相世界人工智能大会,展现「AI+游戏」全新可能

热门文章

  1. 复合索引 /多列索引 /联合索引 /组合索引?????
  2. 小程序app.js的配置
  3. 计算机网络隧道技术,隧道技术-高级计算机网络.ppt
  4. Flutter开发之——Card
  5. windows redis cmd 命令启动
  6. Linux服务篇之远程访问及控制SSH
  7. Java集合面试题整理(超详细)
  8. CAS统一身份认证(四):集成MySQL用户验证
  9. 最大化速率的智能反射面波束成形(上):分式规划
  10. supervisor> restart bili:create_bili_index bili:create_bili_index: ERROR (not running) bili:create_b