Nushell 0.11.0

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.

We’re excited to release the 0.11.0 release of Nu. This release continues to push us forward with new commands, improved engine internals, bugfixes, and more.

Where to get it

Nu 0.11.0 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 more goodies, you can install cargo install nu --features=stable.

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

What’s new

Compound shorthand flags (Amanita-muscaria)

Over the last few releases, we’ve seen the ability for flags to have shorthand version. You no longer needed to use --full if the flag supported the shorter -f version.

In this release, we’ve taken it one step further and allowed you to combine multiple shorthand flags into one group. For example, ls --full --short-names can now be written as ls -fs

Improvements and cleanup for ls (Bocom, quebin31, lincis, equal-l2)

A lot of improvements went into ls for this release. The updated ls command is now more forgiving of coming across directories the user can’t access and will simply show what it can and continue, it can work with named pipes on systems with them, it shows a more reasonable display for zero-length files, and the internals of ls have been cleaned a bit to make way for future improvements.

External command output no longer blocks (thegedge)

Continuing our series of improvements to working with external commands, we have a few updates in this release. The first of these updates is an improvement to how content streams out of externals. With 0.11.0, this content will no longer block, which allows content to flow more easily between external and internal commands. As a result, some corner cases that came up with a series of commands in a pipeline not working because one blocks no longer is an issue.

Allow externals to output texts or binary (jonathandturner, thegedge)

The second update to externals now allows externals to freely output either text or strings, and for this content to be read in a block at a time into Nu. This allows externals to stream any content they wish, and for this stream to continue for as long as needed.

New shuffle command (hirschenberger)

With 0.11.0, we introduce a new shuffle command that will let you shuffle the rows of a table. This allows you to choose to not always process data the same way, or to search through data more stochastically.

❯ help commands | shuffle
─────┬──────────────┬───────────────────────────────────────────────────────────────────────────────────────────────
 #   │ name         │ description
─────┼──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────
   0 │ textview     │ Autoview of text data.
   1 │ pwd          │ Output the current working directory.
   2 │ sort-by      │ Sort by the given columns.
   3 │ tree         │ View the contents of the pipeline as a tree.
   4 │ du           │ Find disk usage sizes of specified items
   5 │ table        │ View the contents of the pipeline as a table.

New column rename command (andrasio)

You can also now use the new rename command to rename a column to a new name.

❯ help commands | rename action description
─────┬──────────────┬───────────────────────────────────────────────────────────────────────────────────────────────
 #   │ action       │ description
─────┼──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────
   0 │ append       │ Append the given row to the table
   1 │ autoview     │ View the contents of the pipeline as a table or list.
   2 │ average      │ Compute the average of a column of numerical values.
   3 │ binaryview   │ Autoview of binary data.

Merge the env command into the $nu variable (jonathandturner)

The $nu variable has grown to include values that were previously part of env, effectively merging the two into the $nu variable. This allows you to easily find out where the history file is stored, where config is stored, and where a good temp directory are all in one place:

❯ echo $nu.home-dir $nu.temp-dir $nu.config-path $nu.history-path
───┬──────────────────────────────────────────────────────────────────────
 # │ <value>
───┼──────────────────────────────────────────────────────────────────────
 0 │ C:\Users\joturner
 1 │ C:\Users\joturner\AppData\Local\Temp\
 2 │ C:\Users\joturner\AppData\Roaming\nu shell developers\nu\config.toml
 3 │ C:\Users\joturner\AppData\Local\nu shell developers\nu\history.txt
───┴──────────────────────────────────────────────────────────────────────

The format command can now use column paths (andrasio)

The format command is a handy way of putting column data into a string for displaying, but it previously had the restriction that you couldn’t use it to print out information that was deeper in the table. With 0.11.0, we’ve removed that restriction.

❯ open Cargo.toml | format "The edition is {package.edition}"
The edition is 2018

Allow help to be printed with -h in more cases (rabisg0)

You should now be able to use -h to reach the help of a command in more cases than was previously allowed, making it a universal way to get to the help text.

Improved documentation (coolshaurya, Amanita-muscaria, notryanb)

Documentation for du, uniq, debug, and plugin docs have all been improved in this release.

Looking ahead

We’re excited to continue to polish how Nu works to make it more reliable and more efficient. Of course, we’re also working on adding new much-requested features like aliases in upcoming releases. If you’d like to help with aliases or with Nu in general – even if you want to help with a part of the project outside of just coding – we’d love to have you. Come visit us on github or the discord.