Nushell
安装 Nu !
快速开始
  • Nushell 之书
  • 命令参考列表
  • 实战指南
  • 语言参考指南
  • 贡献指南
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
安装 Nu !
快速开始
  • Nushell 之书
  • 命令参考列表
  • 实战指南
  • 语言参考指南
  • 贡献指南
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
  • 贡献者指南
    • 介绍
    • 理念
    • 理念 (0.80)
    • 命令
    • 插件
    • 插件协议参考

命令

命令是 Nu 中管道的构建块。它们执行管道的操作,无论是创建数据、在数据从输入流向输出时更改数据,还是在数据退出管道后查看数据。有两种类型的命令:内部命令,即构建在 Nu 内部运行的命令;以及外部命令,即位于 Nu 外部并通过标准 Unix 风格的 stdin/stdout 进行通信的命令。

内部命令

Nu 内部的所有命令,包括插件,都是内部命令。内部命令使用 PipelineData 相互通信。

签名

命令使用轻量级类型检查来确保传递给它们的参数能够正确处理。为了实现这一点,每个 Command 都提供一个 Signature,它告诉 Nu:

  • 命令的名称
  • 位置参数(例如在 start x y 中,x 和 y 是位置参数)
  • 命令是否接受无限数量的额外位置参数(例如 start a1 a2 a3 ... a99 a100)
  • 命名参数(例如 ansi gradient --fgstart '0x40c9ff')

有了这些信息,可以在执行之前检查管道是否存在潜在问题。

外部命令

外部命令是不属于 Nu 内置命令或插件的任何命令。如果调用了一个 Nu 不知道的命令,它将使用提供的参数调用底层环境,尝试将此命令作为外部程序调用。

内部和外部命令之间的通信

内部到内部

内部命令使用 Nu 提供的完整值流相互通信,其中包括所有内置文件类型。这包括内部命令和插件之间的通信(双向)。

内部到外部

向外部命令发送文本的内部命令需要提前准备好文本字符串。如果直接将对象发送到外部命令,这将被视为错误,因为无法推断结构化数据应如何为外部命令表示。期望用户要么缩小到简单的数据单元格,要么使用文件类型转换器之一(如 to json)将表格转换为字符串表示形式。

外部命令被打开,以便重定向其 stdin,从而可以将数据发送给它。

外部到内部

外部命令通过其 stdout 发送一系列字符串。这些字符串被读入管道,并可供管道中的下一个内部命令使用,或者如果外部命令是管道的最后一步,则显示给用户。

外部到外部

外部命令通过 stdin/stdout 相互通信。由于 Nu 会检测到这种情况,它将把第一个命令的 stdout 重定向到后续外部命令的 stdin。通过这种方式,保持了外部命令之间 shell 管道的预期行为。

在GitHub上编辑此页面
Contributors: voyage200🍬
Prev
理念 (0.80)
Next
插件