Nushell
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub

Nushell 0.71

Nushell, or Nu for short, is a new shell that takes a modern, structured approach to your commandline. It works seamlessly with the data from your filesystem, operating system, and a growing number of file formats to make it easy to build powerful commandline pipelines.

Today, we're releasing version 0.71 of Nu. This release includes new operators, better consistency, improved completions, and more.

Where to get it

Nu 0.71 is available as pre-built binaries or from crates.io. If you have Rust installed you can install it using cargo install nu.

If you want all the built-in goodies, such as support for dataframes and SQLite databases, you can install it via cargo install nu --features=extra.

As part of this release, we also publish a set of optional plugins you can install and use with Nu. To install, use cargo install nu_plugin_<plugin name>.

Themes of this release

New ++ operator (merelymyself)

In this release, you can now use the ++ operator to append lists together.

For example, you can combine two lists into a new lists made up of the both lists:

> [1, 2] ++ [3, 4]

Note: Currently, this operator cannot be used to join two tables. This functionality is still being worked on and will likely be present in the next version.

Improved consistency across commands and types

Nushell continues improve quality of the language and shell with a set of consistency improvements in this release. These include:

  • More iterating filter commands now support the $in variable consistently (webbedspace)

  • Lists now support upsert (fdncred)

  • merge can now also operate on records (webbedspace)

  • str substring can take ranges (rgwood)

  • from and to now show help info (rgwood)

Right prompts can now be on the last line (nibon7)

Previously the right prompt appeared only on the same line where the user input started. Now you can choose to place the right prompt part on the last line of user input. This feature is not enabled by default, you can enable it using the config nu command to modify the config.nu file, just set render_right_prompt_on_last_line to true:

let-env config {
  render_right_prompt_on_last_line : true
  ...
}

Default

Default right prompt

Right prompt at bottom

Right prompt on the last line

Configuring the default value viewer via display_output hook (perbothner)

You're now able to configure a new hook, called display_output, which will become the default way that you view data.

Using this, you can for example, use table --expand to always see fully expanded tables.

If your terminal supports it, you can this to render a more full-featured output. For example, DomTerm could be used by setting the display_output hook to: to html --partial --no-color | domterm hcat, sending html to the terminal to be rendered when displaying values.

Updated PR Review Process

Recently, we have been fortunate to see a rise in submitted pull requests (PRs) and we are super grateful for this growing desire to improve Nushell. Unfortunately, in some cases, a well-intended PR does not match the direction Nushell is going, forcing us to close it which leads to wasted time and effort. To help focus PRs in the future, we kindly ask potential contributors to first reach out to us before making a substantial change to Nushell, especially if the change will affect user experience. We updated our contributing guide as well as the PR template to reflect this policy. To summarize:

  1. If you want to make some change to Nushell that is more involved than simple bug-fixing, please go to Discord or a GitHub issue and chat with some core team members and/or other contributors about it.
  2. After getting a green light from the core team, implement the feature, open a pull request (PR) and write a full description of the change.
  3. If your PR includes any user-facing features (such as adding a flag to a command), clearly list them in the PR description.
  4. Then, core team members and other regular contributors will review the PR and suggest changes.
  5. When we all agree, the PR will be merged.
  6. If your PR includes any user-facing features, make sure the changes are also reflected in the documentation after the PR is merged.
  7. Congratulate yourself, you just improved Nushell! 😃

We hope the new policy will help us make the PR review process smoother.

Completion actions now more familiar (dandavison)

We've also recently improved how completions work in Nushell to feel closer to how other shells work. Specifically:

  • Completion goes "as far as possible". So, the entire word if there's a unique completion, or else up to the shared prefix of possible completions.
  • Removes the quick completion behavior whereby a word was completed automatically as soon as the input came to have a unique completion.
  • Tab now completes instead of selecting the next menu item (this can be configured)

Breaking changes

  • New --force (-f) flag for the mv command. This change alters mv default behavior. By default overwriting existing files is now prevented (You can use alias mv = mv -f in you config to get the old defaults back). (#6904)
  • The column name for the command name in $nu.scope.commands has been changed from command to name. Thus, $nu.scope.commands | where name =~ zip would give you specific command info. (#7007)
  • The str distance command now directly returns an Int instead of a record {"distance": <Int>} (#6963)
  • The argument order of format filesize was made consistent with other commands that accept a CellPath to specify fields that should be affected by it. Now the string specifying the format is the first positional argument and the cell path is specified in the following positional argument(s). ([#6879]https://github.com/nushell/nushell/pull/6879)
  • The --perf flag for Nu was removed as part of an effort to simplify diagnostics logging #6834

Next Steps

We've drafted a version of the design philosophy for 0.80, and would love to get your feedback. If you'd like to become part of the effort, please join the discord.

Full changelog

Nushell

  • sophiajt created bump to 0.71, use 1.63 toolchain, and Remove unnecessary clone in par-each
  • sholderbach created Pin reedline to 0.14.0 release, and Make the example names unique across workspace, and Update reedline, and Make example binaries proper cargo examples, and Refactor ansi stripping into nu-util functions, and Remove inadvertent dep on original ansi_term, and Update reedline to latest dev, and Remove unused dependencies, and Move nu-test-support into dev deps on nu-command, and Update nix crate to 0.25 and narrow features, and Fix each while behavior when printing and maybe in other situations by fusing the iterator, and Wrap open parse errors from from commands, and Remove unnecessary #[allow(...)] annotations, and Reduce required dependencies for diagnostics
  • fdncred created Revert "Fix for escaping backslashes in interpolated strings (fixes #6737)", and bump rust-toolchain to 1.64, and category tweak, and change str distance to output value::int, and tweak upsert help text, and enable ability to upsert into a list like update, and bump to dev version 0.70.1
  • dandavison created Add accidentally missing tests of some command examples , and Add an expected result to date format test, and Expose reedline EditCommand::Complete command, and Update reedline to fix history search filtering, and Tab inline completion, and Minor cleanup: simplify and reduce allocations in pipeline data loop
  • 1Kinoti created added some search-terms to the platform category
  • gavinfoley created Fix for escaping backslashes in interpolated strings (fixes #6737)
  • kubouch created Update contributing guide and PR template
  • dmatos2012 created Rename column name from command to name for consistency, and highlight term on PipelineData::Value()
  • SUPERCILEX created Run a round of clippy --fix to fix a ton of lints, and Improve do command docs
  • IanManske created Fix panic when encountering ENOTTY.
  • WindSoilder created Refactor: finish refactor on commands which take optional cell paths., and frently error message for access beyond end, and Refactor: introduce general operate commands to reduce duplicate code, and Allow captured stderr saving to file
  • webbedspace created Fix $in in blocks given to any and all, and Update merge to also take single records (closes #5281), and Further edits to help messages, and Mildly edited a small handful of help messages
  • jenshnielsen created Use nt-api 4 on Windows
  • rgwood created Fix double cache read in CI, and Fix feature flag for open-df test, and Update PR template to mention user-facing changes, and Improve error message for get 0 on non-collection types, and Support ranges in str substring, and Fixes for ps on Linux, and Print command help in base from+to commands, and Diagnostics logging streamlining+tweaks
  • paper-lark created Fix bug with alias handling when searching for matching brackets, and Highlight matching brackets / parentheses
  • PerBothner created New "display_output" hook.
  • kambala-decapitator created fix description of build-string's second example
  • melMass created fix: ✨ "saner" default for mv, and docs: 📝 add "map" to each's search terms
  • zhiburt created [WIP] table: Show truncated record differently, and table/ Fix paging indexing, and table -e Fix stackoverflow (cause endless empty list), and table -e align key to 2nd line, and nu-table: Check perf improvements
  • FilipAndersson245 created Bumps windows dependency
  • nibon7 created path: fix error message, and rm: don't update target_exists every time in the loop, and Add missing shape_directory to default_config.nu, and rm: fix error span when targets doesn't exists, and Add support to render right prompt on last line of the prompt, and Prepend directory to the binary tarball
  • hustcer created Update ci workflow actions, fix #6713
  • ChrisDenton created Try not to use verbatim paths for UNC shares
  • Decodetalkers created fix: fixcd, and feat: coredump
  • merelymyself created make ++ append lists, and add more helpful error for calling a decl that exists in a module

Extension

  • melMass created fix: ⚡️ add path for arm brew

Documentation

  • kubouch created Add review process change, and Update Modules and Overlays chapters
  • webbedspace created Fix let-env Path example to be accurate for Windows, and Update types_of_data.md, and Updated working_with_strings.md (closes #640), and Simplified examples by removing unneeded echo calls, and Add categories column to command_reference
  • PerBothner created Document display_output hook
  • dmatos2012 created docs: document changes from #7007
  • seanbuckley created Update oh-my-posh install link
  • rapenne-s created Mention nushell also run on BSD systems
  • melMass created docs: documents the changes to mv (branch release 0.71)
  • nibon7 created add right prompt guide, and add right prompt release notes
  • kambala-decapitator created fix description of build-string's second example
  • hustcer created Refresh commands docs for nu v0.70

Nu scripts

  • fdncred created oh-my-nu-v2 script - a new prompt for 8bit/24bit terminals, and tweak no back progress bar example
  • 1Kinoti created Make the default for the up command (in the filesystem directory) 1
  • SUPERCILEX created Add prompt with exit code and command duration
  • WindSoilder created fix conda deactivate error when activate with no-prompt

Reedline

  • sholderbach created Use Box::default() in more places, and Prepare the 0.14.0 release, and Fix the additional moves of normal mode hjkl, and Split the main example binary into examples, and Update workflow to new actions (alternative)
  • jcgruenhage created fix: actually use sqlite-dynlib feature
  • nibon7 created show right prompt on indicator line in last line mode, and render right prompt on the last line of the left prompt
  • perlindgren created Custom validator and prompt code examples
  • dandavison created Tab inline completion
  • CozyPenguin created change cursor shape depending on edit mode
Edit this page on GitHub
Contributors: Stefan Holderbach, David Matos, nibon7, Mel Massadian, rgwood, Jakub Žádník, jntrnr, Jan Klass, Justin Ma, Ian Manske, sophiajt