#文件描述符 #shell #运行时 #命令 #编程语言 #Unix shell #异步 I/O

bin+lib conch-runtime

一个用于评估/执行用 shell 编程语言编写的程序的库

7 个版本

使用旧的 Rust 2015

0.1.6 2019年6月3日
0.1.5 2018年9月22日
0.1.4 2018年1月27日
0.1.1 2017年9月14日
0.0.0 2016年12月5日

#29#unix-shell

Download history 9/week @ 2024-07-18 58/week @ 2024-07-25

67 每月下载量

MIT/Apache

535KB
12K SLoC

conch-runtime

Crates.io Documentation Build Status Build Status Coverage

一个用于执行 Unix shell 命令的 Rust 库/运行时。

快速入门

首先,将以下内容添加到您的 Cargo.toml

[dependencies]
conch-runtime = "0.1"

接下来,您可以查看 基本 shell 示例 以开始。

关于

此库提供根据 POSIX.1-2008 标准定义的已解析 shell 命令的执行。此运行时试图对解析器可能产生的特定抽象语法树 (AST) 格式保持中立,以及对操作系统支持的特性的中立,以尽可能实现跨平台。

具体实现了 conch-parser 包生成的所有默认 AST 节点。与其他 Unix shell 不同,此库支持 Windows1,并且可能可以扩展以支持其他操作系统。

1在 Windows 中,主要功能得到了合理的支持。由于操作系统差异(例如异步 I/O 模型)以及 shell 编程语言的内禀实现预期,某些功能可能需要额外的运行时成本,或者可能具有局限性(例如,由于 Windows 地址文件句柄的方式,继承任意编号的文件描述符[除 stdio 之外]可能很困难/不可能)。

目标

  • 提供高效、模块化的 shell 编程语言执行部分的实现,这些实现可以用作构建其他 shell 功能的基础
  • 执行实现应该是独立可重用的,并且对特定的 AST 表示形式保持中立
  • 在可能的情况下,实现操作系统之间的合理功能兼容性
  • 在可能的情况下,避免对特定实现细节的假设,并允许调用者选择适当的权衡

非目标

  • 100% POSIX.1-2008 兼容:该标准用作实现基线,并根据其合理性或有用性添加(或删除)功能
  • 与所有主流壳的兼容性:除非特定功能被广泛使用(并被认为是常见的)或者存在其他包含的充分理由。然而,这并不意味着库永远不会支持用于添加额外语法功能的扩展。
  • 完整的壳实现:这个库的目标是成为一个构建完整壳的垫脚石,而不成为壳本身。

支持的功能

  • 条件列表(foo && bar || baz
  • 管道(! foo | bar
  • 作业(foo &
  • 复合命令
    • 花括号块({ foo; }
    • 子shell($(foo)
    • for / case / if / while / until
  • 函数声明
  • 重定向
    • 这里文档
    • 非stdio描述符的文件描述符继承
  • 展开
    • 参数($foo$@等)
    • 参数替换(${foo:-bar}
    • glob/路径展开
    • 波浪线展开
    • 算术替换
      • 标准所需的常用算术运算(链接)
      • 变量展开
      • 其他内部任意参数/替换展开
  • 引号(单引号、双引号、反引号、转义)
  • 内置命令(例如 cdecho 等)
  • 信号处理
  • 别名解析

许可证

许可以下之一

您可选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的任何贡献,旨在包含在作品中,应如上双许可,不附加任何额外条款或条件。

依赖

~9MB
~151K SLoC