View and filter terminal data as structured tables
Imagine checking a directory listing as a table or selecting only processes with high CPU usage. Nushell is a shell that treats files and data as structured information rather than simple text. This allows you to combine complex tasks in multiple steps and handle processes that previously required parsing text in existing shells in a more intuitive way.
Structured data pipelines
Nushell extends the Unix shell pipeline concept to process structured data. Commands perform one of three roles: generating data, filtering it, or consuming the final output. For example, the ls command returns directory contents as a table of rows and columns, while the where command extracts only the rows matching specific conditions from that table. These values are passed to the next command via the pipe symbol (|), and the table command ultimately displays the results on the screen. This approach allows the same commands to be reused in various combinations, making workflows flexible.
Structured loading of files and URLs
Nushell can read the contents of files or URLs as raw text, but it loads them as structured data when it recognizes the format. For .toml files, using the open command displays the internal keys and values in table form, making it easy to explore specific fields. This simplifies the process of parsing text using tools like grep or sed in existing shells.
Plugin ecosystem and extensibility
Nushell supports plugins that follow the same structured data model as built-in commands. Plugins are binaries that follow the nu_plugin_* naming convention and communicate with the shell via the JSON-RPC protocol. Plugins acting as filters process data by streaming it one item at a time, while plugins acting as sinks receive the final data vector and output it freely. The awesome-nu repository lists various plugins, making it easy to find additional features.
Installation and platform support
Nushell provides first-class support for Windows, macOS, and Linux, ensuring cross-platform operation. To use it in GitHub Actions, refer to the setup-nu action.
Maturity and pre-use considerations
This project has reached minimum viable product (MVP) quality, and many users utilize it as a daily driver. However, some commands may still be unstable, and Nushell's design may change as it matures. It is provided under the MIT license and has officially supported relationships with several tools, including zoxide, starship, and oh-my-posh. It is important to understand and apply the structured data processing approach rather than porting existing shell scripts directly, and it is recommended to verify the stability of specific commands before adoption.