关于 nushell
这项技能介绍结构化数据 Shell Nushell 的用法,包括语法、常见问题和参考文件。它还说明何时选择 Nushell 而非 Bash,以及如何使用持久化的 MCP REPL。
主要功能
- 01结构化数据管道
- 02语法与常见错误指南
- 03数据格式查询与转换
- 04Nushell 与 Bash 的使用建议
- 05持久化 MCP REPL 用法
适用场景
- 01查询 CLI 工具输出的 JSON
- 02探索表格或结构化数据
- 03通过 MCP 运行有状态的 Nushell 代码
MCP 相关
该技能介绍 Nushell MCP 服务,提供 `evaluate`、`list_commands` 和 `command_help` 操作。`evaluate` 在持久化 REPL 中运行代码,变量和历史记录可跨调用保留。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ nushell/ nu_scripts --skill nushell安装后在 Claude Code 中输入/nushell确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/advanced.mdbash-equivalents.mdcommands.mddata-analysis.mdhttp-transport.mdtypes-and-syntax.md详细介绍
使用 Nushell
Nushell 是一种结构化数据 Shell。命令会在管道中传递表、记录和列表,而不是文本。
两种执行路径:
- MCP 服务:
mcp__nushell__evaluate——持久 REPL(变量会在多次调用之间保留) - Bash 工具:
nu -c '<code>'——单次执行(外层封装请使用单引号)
关键规则
**在 MCP stdio 模式下,绝不要直接使用 print。**输出会丢失(返回空的 [])。使用 print -e "msg" 将内容输出到 stderr,或直接返回值(隐式返回)。
字符串插值使用圆括号,而不是花括号:
# WRONG: $"hello {$name}"
# CORRECT: $"hello ($name)"
$"($env.HOME)/docs" $"2 + 2 = (2 + 2)" $"files: (ls | length)"
注意:$"(some text)" 会报错——圆括号会被当作代码求值。要表示字面圆括号,请转义:\(text\)。
**不支持 Bash 语法:**使用 cmd1; cmd2,而不是 &&;使用 o+e>|,而不是 2>&1;使用 $env.VAR,而不是 $VAR;使用 (cmd),而不是 $(cmd)。
常见错误
| 错误 | 修正方式 |
|---|---|
$"hello {$name}" | $"hello ($name)" |
MCP 中的 print "msg" | print -e "msg" 或返回值 |
command 2>&1 | command o+e>| ... |
$HOME/path | $env.HOME 或 $"($env.HOME)/path" |
export FOO=bar | $env.FOO = "bar" |
| 在闭包中修改变量 | 使用 reduce、generate 或 each |
用 \u001b 表示 ANSI | 用 ansi strip 移除,用 char --unicode '1b' 表示 ESC |
where ($in.a > 1) and ($in.b > 2) | 第二个 $in 会重新绑定为布尔值。使用不带 $in 的列名:where a > 1 and b > 2 |
where not ($in.col | cmd) | not 会破坏 $in。使用 where ($in.col | cmd) == false |
where col | cmd(无圆括号) | 会被解析为两个管道阶段。使用 where ($in.col | cmd) |
何时使用 Nushell
以下情况始终优先使用 Nushell:
- 任何结构化数据(JSON、YAML、TOML、CSV、Parquet、SQLite)——统一处理所有格式
- 带有
--json标志的命令行工具——将 JSON 输出直接通过管道传入 Nushell 以进行查询(例如^gh pr list --json title,state | from json) - 临时数据分析和探索——比配置 Python 环境更快
- 初步数据科学/分析——直方图、表格输出、基础聚合
- 大型数据集的 Polars 插件——无需 Python 开销即可使用 DataFrame
**仅在以下情况使用 Bash:**需要 Bash 专用工具、MCP 不可用,或集成依赖 Bash 语法。
参考文件
根据需要阅读相关文件:
| 文件 | 适用场景…… |
|---|---|
| commands.md | 命令参考表(筛选器、字符串、转换、文件系统、数学、日期) |
| types-and-syntax.md | 类型系统、字符串类型、运算符、变量、控制流、单元格路径 |
| data-analysis.md | 格式转换、HTTP、Polars、SQLite、聚合模式 |
| advanced.md | 自定义命令、模块、错误处理、作业、外部命令、环境配置 |
| bash-equivalents.md | 完整的 Bash 到 Nushell 翻译对照表 |
| http-transport.md | 使用 HTTP 传输而非 stdio 时的差异 |
MCP 服务快速提示
mcp__nushell__evaluate——运行代码;mcp__nushell__list_commands——发现命令;mcp__nushell__command_help——查看帮助- 状态会在多次调用之间保留。
$history保存之前的结果(访问$history.0等) - 对于较大的输出,使用
| to text或| to json。使用ansi strip移除颜色
评论
支持 Markdown