Redian新闻
>
Bun 为 JavaScript 和 TypeScript 开发者提供了一个跨平台的 Shell

Bun 为 JavaScript 和 TypeScript 开发者提供了一个跨平台的 Shell

科技

作者 | Agazi Mekonnen
译者 | 平川
策划 | Tina

Bun 首席执行官兼创始人 Jarred Sumner 最近宣布了 Bun Shell。这是一个面向 JavaScript 和 TypeScript 开发人员的跨平台 Shell。Bun Shell 旨在简化 JavaScript 和 TypeScript 中 shell 脚本的执行。它提供了一个类似 bash 的环境,其中包含了诸如文件名通配(globbing)、环境变量、重定向和管道等特性。该版本相当于 alpha 版,将来可能会有破坏性更改。

对于开发人员来说,在 Node.js 中整合 shell 命令并不总是那么简单。虽然 child_process 模块很实用,但它存在安全风险,特别是在处理未经处理的用户输入时,并且易用性比较差。另一方面,fs/promise 模块提供了异步文件系统操作,但它不能直接替代常见的 shell 命令。为了弥补这一差距,开发社区转向了 shelljs、rimraf 等包。

Bun Shell API 引入了一系列旨在增强脚本编写体验的特性。首先,它确保了跨平台兼容性,在 Windows、Linux 或 macOS 上使用时不需要额外的依赖。此外,它采用了类似 bash 的环境,提供了熟悉的语法,与 shell 脚本中的既有约定保持一致。目前,它原生支持“ls”、“cd”和“rm”等基本命令。它还原生支持 glob 模式,包括 **、*、{expansion}等,增强了命令创建的灵活性。Bun Shell 中的模板字面量允许执行带有简单变量和表达式插值的 shell 命令。出于安全考虑,在默认情况下,所有字符串都会被转义,从而降低 shell 注入攻击的风险。

Sumner 着重强调了 Bun Shell 的广泛用途和特性,他说:

它适用于 Windows、macOS 和 Linux。我们已经实现了许多常见的命令和特性,诸如文件名通配(globbing)、环境变量、重定向和管道等等。JavaScript 插值是另一个值得注意的特性,它支持使用 Response、ArrayBuffer、Blob、burn .file(path) 和其他 JavaScript 对象作为 stdin、stdout 和 stderr。这种集成让它可以在脚本中使用不同的数据类型。

让我们从最基本的功能开始,比如回显消息,可以用模板字符串标签 $ 实现:

    import { $ } from "bun";
await $`echo "Hello World!"`; // Hello World!

将输出作为文本来访问也很简单,使用.text() 方法即可:

    import { $ } from "bun";
const result = await $`echo "Hello World!" | wc -w`.text(); console.log(result); // 2

在 Reddit 上有一个帖子讨论最近发布的 Bun Shell,其中,用户 u/nonlogin 提了一个问题:

它与 xz 相比如何?

u/TheUnlocked 在回复时着重描述了 Bun Shell 和 zx 之间的差异:

看起来 Bun 的版本是一个全新的 shell,语法与 bash 相似(但它是跨平台的,并且有一些很棒的特性,如允许重定向到缓冲区),而 zx 只是调用现有 shell 的一种更简单、更安全的方式。Bun Shell API 借鉴了 zx、dax 和 bnx。

原文链接

https://www.infoq.com/news/2024/02/bun-announces-bun-shell/

声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

今日好文推荐

我在技术面试中用 ChatGPT 作弊,没人知道

零一万物刷榜,Zilliz 呛声:面向投资人编程;李彦宏称“程序员将会消失”,周鸿祎回怼;TikTok 危在旦夕 | Q资讯

敲了17年代码,我现在连个面试机会都得不到

“微软已经沦落为 OpenAI 的一个 IT 部门”!资源倾斜引发微软内部员工不满、高管离职

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
7026 血壮山河之枣宜会战 “扑朔迷离”的南瓜店 3【解字】福兮祸兮Property to Virtual Goods, More Young Chinese Are Drafting WillsLevi's起诉Brunello Cucinelli侵犯“矩形口袋标签”商标权麻州一流公立学区,富豪名流聚居地,本周豪宅精选--Weston/Newton/Wellesley/Winchester微软跨平台开发新思路:React Native 如何赋能 Office、Teams、Xbox 等应用?用Rust开发跨平台游戏是怎样的体验?英国优衣库24折!&Other Stories/Weekday罕见4折起!Fresh/Aesop大促75折!上海率先打响AI开发者争夺战!大咖云集,先锋毕至 | 2024全球开发者先锋大会新一代跨平台UI开发工具VGG——无代码还原设计稿的静态视觉效果【Chelsea全新高级公寓V2|近银线Chelsea站|步行5分钟至超市、Starbucks和各式餐厅】Floorp 浏览器:这是最先进的跨平台 Firefox 衍生品吗? | Linux 中国朱令铊中毒的真相(三)&OtherStories大促6折!HB保健品买2赠1!Fresh/Essentials 6折起!Science子刊:饱含神经保护蛋白的微囊泡可抑制Aβ聚集,提供了AD治疗新策略小红书开源跨平台播放器REDPlayer,支持多平台、多格式、多协议微服务过微怎么办?字节跳动提供了一种合并编译的方案|QConBrunello Cucinelli 上季度净营收同比增长16.5%,“中国市场的巨大增长前景显而易见”跨平台 CPU 加速,百度智能云的一键性能调优技术分享美国社区大学转学Offer:罗切斯特大学 University of Rochester《我渴望遇见你》&《岁月带走了青春年华》Guangdong Villages Recruit Matchmakers to Help Single Men好消息!Mozilla 终于官方提供了 Firefox Deb 包 | Linux 中国China’s Priciest Cities Push to Build — and Sell — Cheap Homes几行代码稳定UNet ! 中山大学等提出ScaleLong扩散模型:从质疑Scaling到成为ScalingHarsher Recess Rules Turn School Toilets Into Social HubsWindows版Bun将于本月发布,Zig编写的JavaScript运行时GPTs大翻车后,OpenAI再宣布给开发者送钱!美国码农狂欢《繁花》,梅萍的一句话让人细思极恐Robert Langer加入、PayPal联创支持,英国初创以端到端平台打造「一体化CRO」产品,欲在现有监管框架内实行创新The Contemporary Artist Using Crosses to Push BoundariesCreate 2024百度AI开发者大会:李彦宏带来三大AI开发工具,让人人都是开发者AmEx Delta SkyMiles Reserve Business 商业信用卡【年费上涨,福利更新,110k 开卡奖励】Stability AI让更多的开发者可以访问其下一代文本到图像生成器GDC上风头尽出的腾讯新作,让我看到跨平台开发一点曙光
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。