Description #
NuShell (or nushell) is a modern shell designed around structured data and pipelines. Unlike traditional shells that treat everything as raw text, NuShell processes data as tables (rows and columns), allowing more powerful and intuitive scripting for modern developers.
History #
NuShell was first announced in 2019, created by Jonathan Turner (formerly of Microsoft and Rust team) and contributors. It was designed to rethink how shells should work in the age of APIs, JSON, and complex data. Written in Rust, NuShell has grown rapidly and now runs on Windows, macOS, and Linux.
Key milestones:
- 2019: First public release
- Designed from the ground up for structured output
- Actively maintained with a growing ecosystem
- Inspired by PowerShell, Rust, and functional programming
Hello World Code #
echo "Hello, World!"
How to Run #
Install NuShell:
- macOS:
brew install nushell
- Linux:
sudo snap install nushell --classic
- Windows:
scoop install nu
Or download from https://www.nushell.sh
Run a script:
- Save the code in a file like
hello.nu
- Run:
nu hello.nu
Key Concepts #
- Treats output as structured data, not plain text
- Uses tables to pass and filter information
- Familiar shell commands, enhanced with modern syntax
- Built-in support for JSON, YAML, CSV, and TOML
- Strong error reporting and traceable pipelines
- Plugins and custom commands extend functionality
- Written in Rust for performance and safety
- Supports piping structured objects between commands
- Variables use
let
, and blocks use{}
like modern languages - Great for working with APIs, file systems, and scripting dashboards
Try It Online #
- GitHub Gists with NuShell Examples
- No full online REPL available — best experience is local install
- Demo videos and tutorials on https://www.nushell.sh
Fun Facts #
- Often described as “PowerShell meets Rust meets Unix”
- Built by core devs who helped shape Visual Studio Code and Rust
- Can query JSON files like SQL tables out of the box
- Supports interactive exploration of structured output (like Excel in the terminal)
- One of the few shells designed with data first, text second