Nushell: Structured Data Pipelines for a Cross-Platform Shell
A structured shell for cross-platform developers that pipes file and process data directly.
GitHub nushell/nushell Updated 2026-11-07 Branch main Stars 41.0K Forks 2.3K
Rust Command-line shell Structured data pipelines Windows/macOS/Linux

🧭 Decision Guide

Try it if you

  • You want to use the same ls, where, and table pipelines across Windows, macOS, and Linux.
    The Goals section states that Nu has first-class support for Windows, macOS, and Linux; the Pipelines section shows ls | where type == "dir" | table.
  • You need to explore TOML files such as Cargo.toml by fields and nested paths.
    The Opening files section shows open Cargo.toml, open Cargo.toml | get package, and open Cargo.toml | get package.version.
  • You still need to invoke existing platform executables while processing output from commands such as ps through structured pipelines.
    The Goals section states compatibility with existing platform-specific executables; the Pipelines section shows ps | where cpu > 0.

Skip it if you

  • Your critical workflows require every Nu command to have production-grade stability.
    The Status section says the project is at a minimum-viable-product level and that some commands may be unstable.
  • Your team cannot accept shell design changes as the project matures.
    The Status section explicitly says Nu's design is subject to change as it matures.
  • You only need traditional plain-text shell pipelines and do not need structured data or table output.
    The Philosophy and Pipelines sections emphasize that Nu treats data as structured and provides a third kind of structured data stream.

Requirements

  • The operating system should be Windows, macOS, or Linux, which README explicitly lists as first-class supported platforms.
  • Linux and macOS can use `brew install nushell`, while Windows can use `winget install nushell`.
  • Nu provides `$nu.config-path` to locate the configuration file.

First step (verbatim from README)

brew install nushell

Watch out

  • Do not treat every command as a stable interface; the Status section explicitly leaves open the possibility that some commands are unstable.
    README Status section: it may be unstable for some commands.
  • Do not interpret all output only as Unix text streams; Nu can also produce a structured data stream.
    The README Pipelines section lists structured data as a third kind of stream.
  • The configuration file is not presented as a fixed path; use `$nu.config-path` to locate it.
    The README Configuration section directly provides `$nu.config-path`.

Alternatives

  • PowerShell:When the team already has a PowerShell workflow and does not need to switch to Nu's new pipeline syntax.
    README Philosophy and Goals sections

Not stated in the README

  • The supplied README material does not provide a per-command stability list for version 0.116.1.
  • The supplied README material provides no performance or compatibility benchmarks against Bash, Zsh, or PowerShell.
  • The Plugins chapter is omitted, so the plugin mechanism, ecosystem, and stability cannot be assessed.
  • The supplied material does not explain the dates or changes represented by 5 releases and 10 recent commits.

💡 Deep Analysis

6
No I want to migrate critical automation from the existing shell to Nu and depend on long-term stable command semantics; is the project mature enough today?
For: An automation maintainer who wants to replace part of a production shell environment but depends on stable commands and mature POSIX behavior

No, not for unverified migration of critical production workflows, because the README explicitly preserves risks around command stability and design changes.

  • The Status section describes the project as having reached only a “minimum-viable-product level of quality” and says that some commands may be unstable even though many people use Nu daily.
  • The same section states that Nu’s design is subject to change as it matures, creating ongoing risk for script semantics and command behavior.
  • Structured data, functional pipelines, and cross-platform support are stated goals, but those benefits do not imply a production-stability guarantee for every command.
  • Project data shows latest release 0.116.1 and five releases, which is insufficient by itself to establish stability for the specific commands, plugins, or platforms required by critical automation.
  • Status: "This project has reached a minimum-viable-product level of quality"
  • Status: "it may be unstable for some commands"
  • Status: "Nu's design is subject to change as it matures"
  • Project data: latest_release is 0.116.1; release_count is 5
Not stated in the README:Which commands the critical workflows depend on and how stable those commands are in 0.116.1;Whether the target combination of platforms, plugins, and external executables is covered by continuous integration;The README does not provide command-level stability guarantees, deprecation periods, or a version-compatibility policy
Yes I frequently handle directory listings and running processes and want one field-filtering approach instead of parsing text columns; can Nu directly improve this workflow?
For: A system administrator who queries directories and running processes and wants to move away from grep, awk, and sed parsing

Yes, because the README directly demonstrates that directories and processes can enter structured pipelines and use the same field-filtering approach.

  • ls returns directory records with fields such as name, type, size, and modified; the example filters directories with where type == "dir".
  • ps returns a process table, and the example applies where cpu > 0 to a numeric field rather than relying on displayed column positions.
  • Nu divides commands into producers, filters, and consumers, with table displaying the result, so the same pipeline shape applies to different system objects.
  • The benefit is strongest with Nu built-ins; data from external programs that emit only text still requires unstructured-input handling.
  • Pipelines: "Commands that produce a stream (e.g., `ls`)" and "filter a stream (e.g., `where type == \"dir\"`)"
  • Pipelines: `ls | where type == "dir" | table`
  • Pipelines: `ps | where cpu > 0`
  • Project insight solution_analysis.key_features: `ls` and `ps` output records and tables
ls | where type == "dir" | table
Not stated in the README:Whether `ps` on the target operating systems exposes all required permission, status, and resource fields;Actual performance on large directory or process lists and behavior for missing field values;The README examples do not cover permission failures, empty results, or nested-field edge cases
No My existing Bash/Zsh scripts rely heavily on grep, awk, sed, column positions, and POSIX semantics; can I switch to Nushell without a large rewrite?
For: A system administrator who has long used Bash or Zsh and maintains scripts dependent on text parsing and POSIX semantics

No, not as a drop-in replacement: Nu has different built-ins, variable semantics, argument parsing, and pipeline data models, so existing scripts cannot be assumed compatible.

  • The README presents Nu as a structured shell: ls produces table records, where filters fields, and table consumes pipeline output; this is not an equivalent text-stream model.
  • Nu can still read and write stdout and stdin and invoke existing executables, but that preserves external-command access rather than Bash or Zsh syntax compatibility.
  • The project insight identifies migration risks around variable expansion, conditions, redirection, error handling, paths, and platform commands.
  • The README says the project has reached minimum-viable-product quality, while some commands may be unstable and the design may change, so unverified replacement of critical POSIX scripts is unsuitable.
  • Philosophy/Pipelines: "commands can output structured data" and `ls | where type == "dir" | table`
  • Goals: "Nu ensures compatibility with existing platform-specific executables"
  • Status: "it may be unstable for some commands" and "Nu's design is subject to change"
  • Project insight user_experience.common_pitfalls: existing shell scripts cannot be assumed to be directly compatible
Not stated in the README:Which syntax and external tools in the target Bash/Zsh scripts have Nu equivalents;Whether the scripts depend on commands that are unstable in Nu or on POSIX behavior without a compatibility layer;The README does not provide a complete Bash/Zsh migration mapping
Yes I want to keep Nu's defaults while customizing my interactive behavior, and I need the actual configuration-file location; does the README provide a direct configuration entry point?
For: A Rust/CLI engineer who wants to customize the interactive environment while building on Nu's default configuration

Yes. The README identifies the default configuration source, explains customization, and provides a direct command to locate the active configuration file.

  • It says the startup defaults come from sample_config; those files configure Nushell, after which users can customize them for their own needs.
  • Configuration is documented as a dedicated capability, and config.nu is explicitly named as the place to customize shell behavior.
  • The active configuration path can be queried with $nu.config-path, avoiding assumptions about operating-system-specific locations.
  • However, configuration follows Nu’s own semantics, so Bash, Zsh, or PowerShell configuration syntax cannot be assumed to transfer directly.
  • Configuration: "The default configurations can be found at `sample_config`"
  • Configuration: "customize this file for their specific needs"
  • Configuration: "To see where `config.nu` is located ... `$nu.config-path`"
  • Project insight user_experience.common_pitfalls: Nu's variables and semantics differ from Bash, Zsh, and PowerShell
$nu.config-path
Not stated in the README:The README does not list the exact default configuration directories or loading precedence for each platform;The README does not say whether configuration changes require restarting the current Nu session;The provided README excerpt does not contain a complete list of configurable `config.nu` options
Yes In GitHub Actions, I maintain automation steps across Windows, macOS, and Linux and want to process directory and process data by fields; is Nushell worth adopting?
For: A CI engineer maintaining GitHub Actions workflows on Windows, macOS, and Linux who wants to reduce text-parsing scripts

Yes, especially when CI steps must run across platforms and process structured directory or process data, although external commands still require separate validation.

  • The README explicitly treats Windows, macOS, and Linux as first-class platforms and aims for commands and techniques to work across them.
  • It provides a dedicated setup-nu path for GitHub Actions, showing that Nu has an installation route for this automation environment.
  • ls returns directory records, while ps exposes fields such as pid, name, and cpu; where can be reused for both data sources, reducing column-based text parsing.
  • Nu still allows platform-specific executables, so existing CI tools can remain while suitable processing logic moves to structured pipelines.
  • Installation: "To use `Nu` in GitHub Action, check `setup-nu`"
  • Goals: "first-class support for Windows, macOS, and Linux"
  • Pipelines: examples using `ls`, `where`, and `table`
  • Pipelines: `ps | where cpu > 0` example
Not stated in the README:The exact runner-image and Nu-version support range of setup-nu;Whether external commands used by the workflow behave consistently on all three runner types;The README does not provide a complete GitHub Actions YAML example or failure-handling specification
It depends I need one script workflow across Windows, macOS, and Linux, but I cannot abandon existing platform-specific executables; is Nushell suitable as the unified shell?
For: A cross-platform engineer who needs a consistent command-line experience across Windows, macOS, and Linux while still invoking platform-specific executables

It depends: Nu is suitable as a cross-platform data-processing layer, but it cannot remove platform differences in external programs.

  • The README lists Windows, macOS, and Linux as first-class supported platforms and makes cross-platform behavior the first goal.
  • Nu explicitly supports compatibility with existing platform-specific executables, allowing an incremental migration instead of a complete rewrite.
  • However, the README does not promise identical arguments, exit codes, path formats, or textual output for every external program on all three platforms.
  • Built-in Nu commands produce structured data, while external programs often produce text; crossing that boundary still requires platform-specific parsing and handling.
  • Goals: "Nu is cross-platform" and "first-class support for Windows, macOS, and Linux"
  • Goals: "Nu ensures compatibility with existing platform-specific executables"
  • Philosophy: "Nu views data as either structured or unstructured"
  • Project insight: external programs, arguments, and system return formats may still differ by platform
brew install nushell
Not stated in the README:Whether every external executable used by the target scripts exists on Windows, macOS, and Linux;The exact version-specific compatibility of paths, permissions, process management, and error codes;The README does not provide a command-by-command compatibility matrix across the three platforms

✨ Highlights

  • Build structured data pipelines with ls, where, and table
  • Windows, macOS, and Linux receive first-class cross-platform support
  • open Cargo.toml directly explores TOML structure
  • The MVP-stage project may still be unstable for some commands

🔧 Engineering

  • Nu presents ls output as tables and filters fields with where
  • open Cargo.toml reads nested TOML structure
  • It is compatible with existing platform executables and supports stdout and stdin

⚠️ Risks

  • The Status section says some commands may be unstable, so it cannot be assumed to replace every shell
  • The Status section states that Nu's design may change as it matures
  • The project has reached MVP quality, with 10 contributors

👥 For who?

  • Developers who need similar commands across Windows, macOS, and Linux
  • CLI users handling structured files such as TOML and preferring pipeline composition
  • Nu users working with zoxide, starship, or atuin