You've spent years composing shell pipelines by muscle memory. grep filters, awk pulls out fields, sed mangles lines, and somewhere in the middle you're sure a filename containing a space just broke everything. The friction is not your fault. It's the model: classic shells treat everything as raw text and leave the parsing to you.
Nushell (usually just "nu") is a different idea. It's a shell whose pipelines pass structured data — tables, records, lists — instead of strings. Written in Rust, it's been shipping fast and just reached version 0.116.1 in early October 2026, with a GitHub star count north of 40,000. It is not a parser glued onto Bash. It's a shell built around the premise that your data should come out of the box already shaped.
Same muscle, less text-surfing
The first thing you'll notice is that commands like ls, ps, and open return tables, not text. The output has column headers, and you can reach into it. Rather than piping ps aux into various text filters, you write data-aware filters:
ps | where cpu > 50 | sort-by mem | first 5
That's a complete, readable query — no awk, no column numbers you have to count by hand. If you misremember a column name, pressing Tab completes against the schema of whatever is in the pipeline. That single behavior removes a whole class of "which field was it again?" mistakes.
Real filenames, real formats
File handling is where nu stops pretending. open can load JSON, CSV, and TOML as structured data, so you work with the file's shape instead of its bytes. The README's own example is a nice little flex:
open Cargo.toml | get package.version
That pulls the version straight out of a project manifest with no regex involved. And because data stays structured end to end, a filename with spaces, tabs, or newlines is just a value in a cell — not a parsing catastrophe waiting in a variable.
If old habits die hard, that's fine. The open command even falls back to treating unknown files as raw text, and you can always pipe into external programs. Nu doesn't ask you to abandon audio, video, or whatever gzip -c data.bin produces. It assumes the common case — text-shaped data — is best handled as data.
Extensible without rewiring everything
The core is a single binary, but nu grows through plugins. They follow a nu_plugin_* naming convention and stream structured values in and out over stdin/stdout, so adding a capability doesn't mean forking the shell. There are optional plugins published alongside each release for everything from database queries to system stats.
Worth a real try
Is nu a daily-driver replacement for a seasoned shell user's complex .bashrc? Honestly, sometimes. The docs keep it grounded: "workflow and tools should have the usability expected of modern software." That means milestones like finish-able tab completion, a reliably rendered table, and helpful error messages — the small delights many shells still skip.
The barrier to trying it is low. Pre-built binaries ship for Linux, macOS, and Windows, and with Rust installed you can cargo install nu. The interactive book at nushell.sh/book walks you through the philosophy before a single command. Here's a good way to feel the difference in one go:
open a CSV of your coworkers | where city == "Berlin" | get name
If you've ever written a gnarly awk line and then spent an hour explaining it, you'll understand within five minutes why a shell that returns columns instead of characters feels like a relief. It treats structure as something the shell gives you for free — and after a while, you start to wonder how you ever parsed data by hand.
This post references Nushell 0.116.1 (released 2026-10-04) and the nushell/nushell repository, which passed 40,000 stars on GitHub in late 2026.
You've spent years composing shell pipelines by muscle memory. grep filters, awk pulls out fields, sed mangles lines, and somewhere in the middle a filename containing a space just broke everything. The friction is not your fault. It's the model: classic shells treat everything as raw text and leave the parsing to you.
If old habits die hard, that's fine. open falls back to treating unknown files as raw text, and you can always pipe into external programs. Nu doesn't force you to abandon whatever gzip -c data.bin produces. It assumes the common case — text-shaped data — is best handled as data.
Is nu a daily-driver replacement for a seasoned shell user's complex .bashrc? Honestly, sometimes. The docs keep it grounded: "workflow and tools should have the usability expected of modern software." That means finish-able tab completion, a reliably rendered table, and helpful error messages — the small delights many shells still skip.
If you've ever written a gnarly awk line and then spent an hour explaining it, you'll understand within five minutes why a shell that returns columns instead of characters feels like a relief. It treats structure as something the shell gives you for free — and after a while, you'll wonder how you ever parsed data by hand.