Introduction

Hello, and welcome to the Nushell project. The goal of this project is to take the Unix philosophy of shells, where pipes connect simple commands together, and bring it to the modern style of development. Thus, rather than being either a shell, or a programming language, Nushell connects both by bringing a rich programming language and a full-featured shell together into one package.

Nu takes cues from a lot of familiar territory: traditional shells like bash, object based shells like PowerShell, gradually typed languages like TypeScript, functional programming, systems programming, and more. But rather than trying to be a jack of all trades, Nu focuses its energy on doing a few things well:

  • Being a flexible cross-platform shell with a modern feel
  • Solving problems as a modern programming language that works with the structure of your data
  • Giving clear error messages and clean IDE support

This Book

The book is split into chapters which are further broken down into sections. You can click on the chapter headers to get more information about it.

  • Getting Started teaches you how to install Nushell and shows you the ropes. It also explains some of the design principles where Nushell differs from typical shells, such as bash.
  • Nu Fundamentals explains basic concepts of the Nushell language.
  • Programming in Nu dives more deeply into the language features and shows several ways how to organize and structure your code.
  • Nu as a Shell focuses on the shell features, most notably the configuration and environment.
  • Coming to Nu is intended to give a quick start for users coming from other shells or languages.
  • Design Notes has in-depth explanation of some of the Nushell's design choices.
  • (Not So) Advanced includes some more advanced topics (they are not so advanced, make sure to check them out, too!).

The Many Parts of Nushell

The Nushell project consists of multiple different repositories and subprojects. You can find all of them under our organization on GitHubopen in new window.

Contributing

We welcome contributions! As you can see, there are a lot of places to contribute to. Most repositories contain CONTRIBUTING.md file with tips and details that should help you get started (if not, consider contributing a fix!).

Nushell itself is written in Rustopen in new window. However, you do not have to be a Rust programmer to help. If you know some web development, you can contribute to improving this website or the Nana project. Dataframes can use your data processing expertise.

If you wrote a cool script, plugin or integrated Nushell somewhere, we'd welcome your contribution to nu_scripts or Awesome Nu. Discovering bugs with reproduction steps and filing GitHub issues for them is a valuable help, too! You can contribute to Nushell just by using Nushell!

Since Nushell evolves fast, this book is in a constant need of updating. Contributing to this book does not require any special skills aside from a basic familiarity with Markdown. Furthermore, you can consider translating parts of it to your language.

Community

The main place to discuss anything Nushell is our Discordopen in new window. You can also follow us on Twitteropen in new window for news and updates. Finally, you can use the GitHub discussions or file GitHub issues.

Contributors: JT, Jonathan Turner, Justin Ma, JT, Jakub Žádník, Reilly Wood, Andrés N. Robalino, Darren Schroeder, Eli Flanagan, Evan Platzer, Fernando Herrera, Ibraheem Ahmed, Mark Volkmann, R. Mark Volkmann, ibraheemdev