# nushell/nushell

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/nushell-nushell).**

38,461 stars · 2,046 forks · Rust · mit

## Links

- GitHub: https://github.com/nushell/nushell
- Homepage: https://www.nushell.sh/
- awesome-repositories: https://awesome-repositories.com/repository/nushell-nushell.md

## Topics

`nushell` `rust` `shell`

## Description

Nushell is a cross-platform shell and programming language designed to treat all input and output as structured data rather than raw text streams. By enforcing data types and command signatures, it provides a consistent environment for building robust, pipeline-oriented workflows. The shell allows users to chain commands that pass structured objects between stages, enabling complex data processing and automation tasks that remain predictable across different operating systems.

What distinguishes the project is its focus on interactive data exploration and modular extensibility. Users can query, sort, and visualize local files, databases, and remote API responses directly within the terminal using native structured data primitives. The shell supports a plugin-based architecture that allows external binaries to register as native commands, alongside a module system that enables the creation of reusable, scoped command-line tools. These features are complemented by a flexible configuration system that allows for deep customization of the shell environment, including prompts, keybindings, and persistent settings.

The platform provides a comprehensive suite of tools for managing data and execution flow. It includes built-in support for structured data manipulation, such as record and table operations, as well as advanced features like concurrent pipeline processing, background job management, and runtime error handling. The shell also offers a sophisticated line editor with support for modal editing and interactive menus to streamline command entry.

Documentation and configuration are managed through standard files, allowing users to define custom commands, aliases, and environment variables that persist across sessions. The system is designed to integrate seamlessly with existing external commands, automatically converting between structured data and text or binary formats to maintain compatibility with standard system utilities.

## Tags

### Data & Databases

- [Data Structure Definitions](https://awesome-repositories.com/f/data-databases/data-structure-definitions.md) — Organizes data into lists, records, and tables to manage complex datasets. ([source](https://www.nushell.sh/book/types_of_data.html))
- [Interactive Data Querying Tools](https://awesome-repositories.com/f/data-databases/interactive-data-querying-tools.md) — Querying, sorting, and visualizing local files, databases, and remote API responses directly within the terminal using structured data primitives.
- [Path-Based Data Access](https://awesome-repositories.com/f/data-databases/path-based-data-access.md) — Enables retrieval of values from records and tables using dot-separated paths. ([source](https://www.nushell.sh/book/navigating_structured_data.html))
- [Structured Data Records](https://awesome-repositories.com/f/data-databases/structured-data-records.md) — Provides syntax for creating structured key-value data objects. ([source](https://www.nushell.sh/book/working_with_records.html))
- [Data Filtering Tools](https://awesome-repositories.com/f/data-databases/data-filtering-tools.md) — Allows narrowing datasets by selecting specific columns or filtering rows based on position. ([source](https://www.nushell.sh/book/working_with_tables.html))
- [Data Manipulation Utilities](https://awesome-repositories.com/f/data-databases/data-manipulation-utilities.md) — Enables modification of record contents through field insertion, value updates, and record merging. ([source](https://www.nushell.sh/book/working_with_records.html))
- [Data Transformation Utilities](https://awesome-repositories.com/f/data-databases/data-transformation-utilities.md) — Nushell supports merging multiple tables by appending rows or joining columns to aggregate data from different sources into a single unified structure. ([source](https://www.nushell.sh/book/working_with_tables.html))
- [Structured Data Parsers](https://awesome-repositories.com/f/data-databases/structured-data-parsers.md) — Enables importing structured data from various formats by automatically detecting file types. ([source](https://www.nushell.sh/book/loading_data.html))
- [Data Querying Interfaces](https://awesome-repositories.com/f/data-databases/data-querying-interfaces.md) — Supports retrieval of specific values or subsets from data structures using dynamic variables and expressions. ([source](https://www.nushell.sh/book/navigating_structured_data.html))
- [Dataframe Engines](https://awesome-repositories.com/f/data-databases/dataframe-engines.md) — Supports importing data as eager or lazy dataframes for optimized query execution. ([source](https://www.nushell.sh/book/dataframes.html))
- [SQLite Integration](https://awesome-repositories.com/f/data-databases/sqlite-integration.md) — Enables accessing SQLite databases by querying tables or executing custom SQL statements. ([source](https://www.nushell.sh/book/loading_data.html))
- [Collection Iterators](https://awesome-repositories.com/f/data-databases/collection-iterators.md) — Supports processing list elements by applying code blocks, filtering, or reducing collections. ([source](https://www.nushell.sh/book/working_with_lists.html))
- [Data Sorting Engines](https://awesome-repositories.com/f/data-databases/data-sorting-engines.md) — Supports organizing table rows by one or more columns using comparison-based ordering. ([source](https://www.nushell.sh/book/working_with_tables.html))
- [Lazy Query Execution](https://awesome-repositories.com/f/data-databases/lazy-query-execution.md) — Supports chaining operations on lazy dataframes to defer computation until final collection. ([source](https://www.nushell.sh/book/dataframes.html))
- [Query Optimization Engines](https://awesome-repositories.com/f/data-databases/query-optimization-engines.md) — Defers computation of complex data transformations until the final result is requested to optimize performance for large datasets.
- [Data Pipeline Automation](https://awesome-repositories.com/f/data-databases/data-pipeline-automation.md) — Building data processing workflows that transform, filter, and aggregate information using a unified, type-aware command-line environment.
- [List Processing Tools](https://awesome-repositories.com/f/data-databases/list-processing-tools.md) — Allows modification of list contents by inserting or updating values at specific indices. ([source](https://www.nushell.sh/book/working_with_lists.html))
- [Structured Data Sorters](https://awesome-repositories.com/f/data-databases/structured-data-sorters.md) — Allows ordering tables or nested records by specifying one or more cell paths as keys. ([source](https://www.nushell.sh/book/sorting.html))

### Development Tools & Productivity

- [Data Pipelines](https://awesome-repositories.com/f/development-tools-productivity/data-pipelines.md) — Enables the construction of data processing workflows by chaining input, filter, and output commands. ([source](https://www.nushell.sh/book/pipelines.html))
- [Cross-Platform Scripting Environments](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-scripting-environments.md) — Writing portable automation scripts that maintain consistent behavior and data handling across different operating systems and environments.
- [External Command Integrations](https://awesome-repositories.com/f/development-tools-productivity/external-command-integrations.md) — Pipes data between internal and external commands with automatic conversion between structured data, text, and binary formats. ([source](https://www.nushell.sh/book/pipelines.html))
- [Structured Shells](https://awesome-repositories.com/f/development-tools-productivity/structured-shells.md) — A command-line environment that treats all input and output as structured data rather than raw text streams.
- [Command Aliasing](https://awesome-repositories.com/f/development-tools-productivity/command-aliasing.md) — Nushell enables defining shorthand names for longer commands, including default arguments, to simplify command execution and improve workflow efficiency within the shell. ([source](https://www.nushell.sh/book/aliases.html))
- [Command Line Extensions](https://awesome-repositories.com/f/development-tools-productivity/command-line-extensions.md) — Extending the shell environment by creating reusable modules, custom commands, and plugins that integrate seamlessly into existing pipelines.
- [Environment Variable Managers](https://awesome-repositories.com/f/development-tools-productivity/environment-variable-managers.md) — Nushell enables inspecting and modifying environment variables, including execution metrics, configuration settings, and process exit codes, using a mutable environment record. ([source](https://www.nushell.sh/book/configuration.html))
- [Plugin Architectures](https://awesome-repositories.com/f/development-tools-productivity/plugin-architectures.md) — Nushell supports standalone executable plugins that communicate with the shell using standard streams or local sockets through structured data formats like JSON or MessagePack. ([source](https://www.nushell.sh/book/plugins.html))
- [Filesystem Utilities](https://awesome-repositories.com/f/development-tools-productivity/filesystem-utilities.md) — Nushell supports displaying directory contents as a structured table, optionally filtering results using glob patterns to match specific filenames or extensions. ([source](https://www.nushell.sh/book/moving_around.html))
- [Pipeline Input Accessors](https://awesome-repositories.com/f/development-tools-productivity/pipeline-input-accessors.md) — Allows commands and filter closures to retrieve the current pipeline input to manipulate data dynamically. ([source](https://www.nushell.sh/book/pipelines.html))
- [Plugin Frameworks](https://awesome-repositories.com/f/development-tools-productivity/plugin-frameworks.md) — A modular framework that allows users to extend shell functionality with custom binaries that communicate via structured data formats.
- [Shell Configuration Frameworks](https://awesome-repositories.com/f/development-tools-productivity/shell-configuration-frameworks.md) — Nushell supports modifying specific keys within the configuration record to adjust shell behavior without overwriting existing settings or resetting default values. ([source](https://www.nushell.sh/book/configuration.html))
- [Environment Variable Interfaces](https://awesome-repositories.com/f/development-tools-productivity/environment-variable-interfaces.md) — Nushell supports assigning environment variables by directly modifying the environment table or loading multiple variables at once using a table of pairs. ([source](https://www.nushell.sh/book/environment.html))
- [Filesystem Management Tools](https://awesome-repositories.com/f/development-tools-productivity/filesystem-management-tools.md) — Nushell supports cross-platform filesystem operations like moving, copying, and removing files or directories using built-in commands that integrate with the shell. ([source](https://www.nushell.sh/book/moving_around.html))
- [Interactive Menus](https://awesome-repositories.com/f/development-tools-productivity/interactive-menus.md) — Provides interactive menus for command help, auto-completion, and history navigation. ([source](https://www.nushell.sh/book/line_editor.html))
- [Output Redirection](https://awesome-repositories.com/f/development-tools-productivity/output-redirection.md) — Supports sending standard output and error streams from external commands to files using shorthand operators. ([source](https://www.nushell.sh/book/stdout_stderr_exit_codes.html))
- [Shell Customization Frameworks](https://awesome-repositories.com/f/development-tools-productivity/shell-customization-frameworks.md) — Tailoring the shell experience through configurable prompts, keybindings, and persistent environment settings to optimize personal development productivity.
- [Shell Startup Managers](https://awesome-repositories.com/f/development-tools-productivity/shell-startup-managers.md) — Nushell allows defining shell startup behavior by editing configuration files to set environment variables, custom commands, and settings for modular workflows. ([source](https://www.nushell.sh/book/configuration.html))
- [Directory Navigation Utilities](https://awesome-repositories.com/f/development-tools-productivity/directory-navigation-utilities.md) — Nushell enables maintaining a stack of directories by adding, removing, and navigating between them using indexed list commands to manage multiple active paths. ([source](https://www.nushell.sh/book/directory_stack.html))
- [Environment Configuration Tools](https://awesome-repositories.com/f/development-tools-productivity/environment-configuration-tools.md) — Nushell supports updating environment variables or the current working directory within a custom command by using specific flags to persist changes to the caller. ([source](https://www.nushell.sh/book/custom_commands.html))
- [Extension Registries](https://awesome-repositories.com/f/development-tools-productivity/extension-registries.md) — Nushell enables the registration of external plugin binaries to the system registry to cache available commands and ensure they load automatically during shell sessions. ([source](https://www.nushell.sh/book/plugins.html))
- [Keybinding Configurations](https://awesome-repositories.com/f/development-tools-productivity/keybinding-configurations.md) — Enables mapping specific key combinations to sequences of edit, send, or event commands to customize input behavior. ([source](https://www.nushell.sh/book/line_editor.html))
- [Pipeline Management Tools](https://awesome-repositories.com/f/development-tools-productivity/pipeline-management-tools.md) — Nushell allows capturing standard output and error streams from external commands into the pipeline for processing or redirection to files for logging. ([source](https://www.nushell.sh/book/stdout_stderr_exit_codes.html))
- [Shell Configuration Management](https://awesome-repositories.com/f/development-tools-productivity/shell-configuration-management.md) — Nushell supports saving aliases permanently by adding them to the configuration file to ensure they remain available in every new shell session. ([source](https://www.nushell.sh/book/aliases.html))
- [Shell Prompt Customizers](https://awesome-repositories.com/f/development-tools-productivity/shell-prompt-customizers.md) — Nushell enables customizing the shell prompt appearance by defining command blocks for primary and right-side prompts, including support for transient lines. ([source](https://www.nushell.sh/book/coloring_and_theming.html))
- [Startup Configurations](https://awesome-repositories.com/f/development-tools-productivity/startup-configurations.md) — Provides mechanisms to redirect startup directories and manage environment variables during shell initialization. ([source](https://www.nushell.sh/book/configuration.html))

### Programming Languages & Runtimes

- [Custom Commands](https://awesome-repositories.com/f/programming-languages-runtimes/custom-commands.md) — Allows the creation of reusable commands to extend shell functionality. ([source](https://www.nushell.sh/book/custom_commands.html))
- [Execution Contexts](https://awesome-repositories.com/f/programming-languages-runtimes/execution-contexts.md) — Maintains a mutable record of variables and directory stacks that propagates through command pipelines and nested scopes.
- [Functional Programming Languages](https://awesome-repositories.com/f/programming-languages-runtimes/functional-programming-languages.md) — A functional language designed for building data processing workflows by chaining commands that pass structured objects between stages.
- [Scripting Environments](https://awesome-repositories.com/f/programming-languages-runtimes/scripting-environments.md) — Enforces data types and command signatures to ensure robust logic and predictable behavior during script execution.
- [Shell Environments](https://awesome-repositories.com/f/programming-languages-runtimes/shell-environments.md) — A unified shell interface that provides consistent filesystem and process management across different operating systems.
- [Command Signatures](https://awesome-repositories.com/f/programming-languages-runtimes/command-signatures.md) — Enables strict parameter specification and type validation for custom commands. ([source](https://www.nushell.sh/book/custom_commands.html))
- [Pipeline Signatures](https://awesome-repositories.com/f/programming-languages-runtimes/pipeline-signatures.md) — Enables strict input and output type checking for commands within pipelines. ([source](https://www.nushell.sh/book/custom_commands.html))
- [Primitive Data Types](https://awesome-repositories.com/f/programming-languages-runtimes/primitive-data-types.md) — Supports primitive types including integers, strings, booleans, dates, and durations. ([source](https://www.nushell.sh/book/types_of_data.html))
- [Conditional Logic](https://awesome-repositories.com/f/programming-languages-runtimes/conditional-logic.md) — Supports branching logic and pattern matching within data pipelines. ([source](https://www.nushell.sh/book/control_flow.html))
- [Immutable Variables](https://awesome-repositories.com/f/programming-languages-runtimes/immutable-variables.md) — Supports declaring variables that cannot be reassigned after initialization to ensure data integrity. ([source](https://www.nushell.sh/book/variables.html))
- [Module Imports](https://awesome-repositories.com/f/programming-languages-runtimes/module-imports.md) — Enables loading custom commands and constants from external files. ([source](https://www.nushell.sh/book/modules/using_modules.html))
- [Mutable Variables](https://awesome-repositories.com/f/programming-languages-runtimes/mutable-variables.md) — Allows declaring variables that permit value updates for dynamic data handling during script execution. ([source](https://www.nushell.sh/book/variables.html))
- [Reusable Modules](https://awesome-repositories.com/f/programming-languages-runtimes/reusable-modules.md) — Supports defining reusable commands and constants in modular files. ([source](https://www.nushell.sh/book/modules/creating_modules.html))
- [Concurrency Primitives](https://awesome-repositories.com/f/programming-languages-runtimes/concurrency-primitives.md) — Allows concurrent execution of pipeline blocks across multiple hardware threads. ([source](https://www.nushell.sh/book/parallelism.html))
- [Module Overlays](https://awesome-repositories.com/f/programming-languages-runtimes/module-overlays.md) — Supports importing module definitions as overlays for immediate session use. ([source](https://www.nushell.sh/book/overlays.html))
- [Environment Metadata Accessors](https://awesome-repositories.com/f/programming-languages-runtimes/environment-metadata-accessors.md) — Enables retrieving shell configuration, process information, and performance metrics through a structured environment record. ([source](https://www.nushell.sh/book/special_variables.html))
- [Iteration Constructs](https://awesome-repositories.com/f/programming-languages-runtimes/iteration-constructs.md) — Enables repeating code blocks for data processing tasks. ([source](https://www.nushell.sh/book/control_flow.html))
- [Namespace Prefixing](https://awesome-repositories.com/f/programming-languages-runtimes/namespace-prefixing.md) — Allows importing module definitions under namespace prefixes to prevent name collisions. ([source](https://www.nushell.sh/book/overlays.html))
- [Standard Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/standard-libraries.md) — Nushell provides built-in library modules that can be imported to access essential tools for logging, data formatting, system assertions, and custom help documentation. ([source](https://www.nushell.sh/book/standard_library.html))
- [HTTP Metadata Accessors](https://awesome-repositories.com/f/programming-languages-runtimes/http-metadata-accessors.md) — Provides structured access to HTTP response headers and status codes from network request commands. ([source](https://www.nushell.sh/book/metadata.html))
- [Module Environments](https://awesome-repositories.com/f/programming-languages-runtimes/module-environments.md) — Allows defining environment variables that automatically apply when a module is imported. ([source](https://www.nushell.sh/book/modules/creating_modules.html))
- [Module Exports](https://awesome-repositories.com/f/programming-languages-runtimes/module-exports.md) — Enables explicit control over which module definitions are exported for external use. ([source](https://www.nushell.sh/book/modules/creating_modules.html))
- [Overlay Management](https://awesome-repositories.com/f/programming-languages-runtimes/overlay-management.md) — Provides control over discarding overlays while retaining specific session definitions. ([source](https://www.nushell.sh/book/overlays.html))
- [Static Analysis Tools](https://awesome-repositories.com/f/programming-languages-runtimes/static-analysis-tools.md) — Resolves immutable variables and command arguments during the initial parsing phase to ensure static configuration safety.

### Software Engineering & Architecture

- [Data Processing Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/data-processing-pipelines.md) — Processes data by passing structured objects through a series of connected commands that transform input into output.
- [Type Systems](https://awesome-repositories.com/f/software-engineering-architecture/type-systems.md) — Maintains internal consistency by enforcing strict type definitions for all variables and pipeline data during execution.

### System Administration & Monitoring

- [Concurrency Utilities](https://awesome-repositories.com/f/system-administration-monitoring/concurrency-utilities.md) — Nushell enables executing tasks in the background by passing a closure to a command that runs code in a separate thread and returns an identifier. ([source](https://www.nushell.sh/book/background_jobs.html))
- [Task Management](https://awesome-repositories.com/f/system-administration-monitoring/task-management.md) — Nushell supports listing currently executing background tasks and terminating specific jobs by their identifier to stop the associated thread and child processes. ([source](https://www.nushell.sh/book/background_jobs.html))
- [Inter-Process Communication](https://awesome-repositories.com/f/system-administration-monitoring/inter-process-communication.md) — Nushell allows exchanging data between the main thread and background jobs using send and receive commands to enable bidirectional communication between contexts. ([source](https://www.nushell.sh/book/background_jobs.html))

### Testing & Quality Assurance

- [Error Handling](https://awesome-repositories.com/f/testing-quality-assurance/error-handling.md) — Provides mechanisms to catch runtime errors and implement custom exception handling. ([source](https://www.nushell.sh/book/control_flow.html))

### User Interface & Experience

- [Output Renderers](https://awesome-repositories.com/f/user-interface-experience/output-renderers.md) — Allows configuring how pipeline results appear in the terminal by customizing display hooks. ([source](https://www.nushell.sh/book/pipelines.html))

### Web Development

- [Remote Data Fetching](https://awesome-repositories.com/f/web-development/remote-data-fetching.md) — Enables retrieving content from URLs and parsing it into structured formats. ([source](https://www.nushell.sh/book/loading_data.html))
