← All open source projects

Nushell

nushell/nushell

Nushell is a modern shell where commands pass structured data instead of only text.

Forks 2,167
Author nushell
Language Rust
License MIT
Synced 2026-06-27

What it is

Nushell is a modern shell written in Rust. Its core idea is passing structured data between commands: tables, records, lists, and values, not only text lines.

Traditional shell pipelines are powerful but often require `grep`, `awk`, `sed`, and manual parsing. Nushell makes files, JSON, CSV, processes, and system data more structured.

How the approach works

Nushell commands return data that can be filtered, sorted, selected by columns, and passed onward. It feels like working with a table in the terminal.

This helps with diagnostics, data processing, and automation where result structure matters.

Structured pipeline

This example shows the Nushell style: file listing becomes a table, then gets filtered and sorted.

Language: Plain text
ls
| where type == file
| sort-by size
| last 10
| select name size modified

What is inside

The repository contains the shell, standard commands, parser, execution engine, documentation, tests, and installation material.

Nushell combines ideas from shells, data languages, and interactive tables.

Practical context

It is best adopted gradually: use it first for JSON, CSV, and file-processing tasks rather than rewriting every script.

Bash and POSIX shell remain important on servers, so Nushell often lives beside them.

How it differs from a traditional shell

Nushell changes a central command-line habit: data between commands is not only text lines, but structured tables and values. This is especially useful when filtering JSON, CSV, process lists, or system-command output.

Instead of a long chain of grep, awk, and sed, users can address columns, sort, group, and transform data as structure. Many one-off operations become clearer and less fragile.

The limitation is compatibility: the huge world of shell scripts was built around text streams. Nushell can call external commands, but its own model takes learning and does not replace old scripts without changes every time.

The repository matters as an experiment in what the command line could be if it had originally been designed around data instead of unstructured screen output.

This also changes interactive exploration. A user can inspect a table, select columns, and continue transforming the same data without mentally parsing columns from plain text output each time.

That makes the shell feel closer to a small data workbench while still remaining a command-line environment.

Strengths and limits

The strength is structured data in the terminal. The limit is syntax difference and old-script compatibility.