现在数据处理、自动化脚本和命令行工具的复杂度越来越高,日常用的 Bash、Zsh等 Shell 在处理结构化数据时显得有点力不从心。最近在 GitHub 上刷到一款现代感十足的开源 Shell 项目——Nushell,用结构化数据的方式重新定义了命令行交互体验。
项目简介
Nushell 是一个用 Rust 编写的现代命令行 Shell,它不仅兼顾传统 Shell 的交互式体验,还把所有输出看作结构化数据,可以像处理表格、JSON、YAML 那样操作命令结果,而不是传统的纯文本。
它集成了语言特性、管道数据处理、插件扩展等功能,是一种介于 Shell 和编程语言之间的新范式。
项目在 GitHub 上有近 4w star,非常受欢迎。

功能特性
- 支持跨平台运行:Linux、macOS、BSD 和 Windows 通用,学一次用到处。
- 所有命令输出都转换为结构化数据(表格/记录/List),可安全筛选、排序、过滤。

- 现代管道机制:管道输出结构化数据而非纯文本,让数据流处理更可靠。
- 内建对常见格式支持(如 JSON、YAML、CSV、SQLite、Excel),直接处理文件/API 数据。

- 插件系统强大:支持扩展插件,为 Shell 增加更多功能。
- 良好错误提示:基于类型的错误检查,比传统 Shell 报错更清晰。

快速安装使用
安装 Nushell 很简单,可以通过常见包管理器、预编译二进制或源码方式安装,详细步骤可参考官方文档。
macOS / Linux
# 如果用 Homebrew
brew install nushell
# Ubuntu/Debian
sudo apt install nushell
Windows
winget install nushell
# 或指定安装范围
winget install nushell --scope machine
安装完后,在终端输入 nu 即可进入 Nushell 环境。

下面通过一些常见命令展示 Nushell 与传统 Shell 不同的“结构化”管道处理方式:
1. 普通目录列表输出
ls
在 Nushell 中,ls 不仅是字符流,而是一个表格结构,带有字段 name、type、size 等,你可以直接操作这些字段。
2. 通过管道筛选
ls | where size > 1mb | sort-by size --reverse
这条命令将目录列表按文件大小过滤、排序,比传统 Shell 配合 awk/sed 更直观。

3. 加载 JSON 并提取字段
open about.json | get conda_version

无需外部工具就能处理 JSON 内容,这对自动化或脚本场景特别友好。
4. HTTP API 返回结构化处理
http get https://api.github.com/repos/nushell/nushell | select stargazers_count
直接请求 API 并提取关注者数,效果类似 curl | jq,但语法更统一。

开源君想说
Nushell 是一个值得尝试的现代 Shell,它把命令行从“流式文本”提升到了“结构化数据流”的层面,使得日常的数据处理、系统交互更可靠、更直观、更高效。对于习惯了 Bash 或 PowerShell 的开发者来说,它也带来了更强的数据操作能力和现代脚本写法的启发。
更多细节功能,感兴趣的可以到项目地址查看:
https://github.com/nushell/nushell
|