Home Explore Blog CI



nushell

1st chunk of `blog/2020-09-22-nushell_0_20.md`
01b6e9e82c2ebe4cf9f5430ac4e40da3428319fce39ec0f40000000100000ffe
---
title: Nushell 0.20
author: The Nu Authors
author_site: https://twitter.com/nu_shell
author_image: https://www.nushell.sh/blog/images/nu_logo.png
excerpt: Today, we're releasing 0.20 of Nu. In this version, we're introducing some new features for working with rows, improvements to completions, and more.
---

# Nushell 0.20

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 0.20 of Nu. In this version, we're introducing some new features for working with rows, improvements to completions, and more.

# Where to get it

Nu 0.20 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.20.0) or from [crates.io](https://crates.io/crates/nu). If you have Rust installed you can install it using `cargo install nu`.

If you want all the goodies, you can install `cargo install nu --features=extra`.

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

## New functionality

### `each group` and `each window` (ritobanrc)

With 0.20, you can now work with groups of rows at a time easier than ever before.

For example, let's say you have a table like this:

```
───┬───────┬─────
 # │ name  │ age
───┼───────┼─────
 0 │ Joe   │  30
 1 │ Fred  │  40
 2 │ Sally │  40
 3 │ Sean  │  42
 4 │ Gram  │  66
 5 │ Todd  │   1
───┴───────┴─────
```

And you wanted to take three rows at a time, and sum the ages. You can now do this using:

```
... | each group 3 { get age | math sum }
───┬─────
 0 │ 110
 1 │ 109
───┴─────
```

Or, you can slide a "window" over the data, looking at multiple rows at a time. Let's slide a window of two rows, so that we look at each pair. We can use this to average the adjacent rows:

```
... | each window 2 { get age | math avg }
───┬─────────
 0 │ 35.0000
 1 │ 40.0000
 2 │ 41.0000
 3 │ 54.0000
 4 │ 33.5000
───┴─────────
```

### Completion improvements (thegedge, rezural)

The new completer received a [lot of bugfixes](https://github.com/nushell/nushell/pull/2497), [more fixes](https://github.com/nushell/nushell/pull/2503), and [yet more fixes](https://github.com/nushell/nushell/pull/2525) since its initial release with 0.19. We're continuing to improve this experience further.

Completions can [now be case-insensitive](https://github.com/nushell/nushell/pull/2556). This is especially useful for platforms where filepaths are case-insensitive.

## Command Improvements

- **NEW** [`random integer`](https://github.com/nushell/nushell/pull/2489) - create random integers (smaydew)
- **NEW** [`exec`](https://github.com/nushell/nushell/pull/2495) - on Unix-based systems with exec support, you can now call the built-in `exec` command (almindor)
- **NEW** [`mod`](https://github.com/nushell/nushell/pull/2505) - a new modulo operator (sophiajt)

- `mv` now uses the [`fs_extra` crate for better recursive moves](https://github.com/nushell/nushell/pull/2487) (almindor)
- More table themes (fdncred)
- `ls -l` now also lists the [number of links](https://github.com/nushell/nushell/pull/2496) (gillespiecd)
- `str substring` can now [optionally take a range](https://github.com/nushell/nushell/pull/2499) (defstryker)
- `char` gets support for [weather characters](https://github.com/nushell/nushell/pull/2500) (fdncred)
- Ranges can now [start or end with variables](https://github.com/nushell/nushell/pull/2506) and can have [decimal numbers as boundaries](https://github.com/nushell/nushell/pull/2509) (sophiajt)
- Ranges can now [also be exclusive](https://github.com/nushell/nushell/pull/2541) using the `x..<y` syntax (radekvit)

Title: Nushell 0.20 Release: New Features and Improvements
Summary
Nushell 0.20 has been released, featuring new functionalities like `each group` and `each window` for working with rows, and improvements to auto-completion. It also includes new commands like `random integer`, `exec`, and `mod`, plus enhancements to existing commands like `mv`, `ls`, `str substring`, and `char`, as well as range support.