Home Explore Blog CI



nushell

blog/2022-05-03-nushell_0_62.md
f156ca96e01c06d513a22989e44ce1224e9df17747af1c8d0000000300005bf8
---
title: Nushell 0.62
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 version 0.62 of Nu. This release deeper integration with sqlite, new completion logic, and much more.
---

# Nushell 0.62

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.62 of Nu. This release deeper integration with SQLite, new completion logic, and much more.

<!-- more -->

# Where to get it

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

**A note on this release:** The binaries published by the Nu team now include a statically linked copy of the OpenSSL library (previously Nu used a shared library, AKA 'dynamic linking'). The goal of this change is to make Nu simpler to deploy with fewer dependencies.

This feature is enabled by the "static-link-openssl" Cargo feature, so it's easy to disable if needed when building Nu.

If you want all the built-in goodies, you can install `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>`.

# Database connectivity (rgwood, elferherrera, fdncred)

A gap in the "Nushell story" up to this point has been that although Nushell is a language and shell focused on data, there wasn't yet any ability to query databases and work with their data. With 0.62, we take our first step in that direction.

New in this release is the `db` command, which allows you to connect to a SQLite database and create a SQL query to run on it:

```
  > db open db.sqlite
    | db from table_a
    | db select a
    | db limit 10
    | db describe
```

With the `db open` command we open a connection to the database, then subsequent `db` commands build up a query step by step. One new twist with `db` for Nushell is that the query is built lazily, and will only be run once the data is needed.

Queries can also be written as raw SQL:

```
  > db open db.sqlite | db query "SELECT a FROM table_a LIMIT 10"
```

And finally, the `open` command has been updated to be SQLite-aware:

```
  > open db.sqlite
```

In all of the queries above, `db open db.sqlite` could be replaced by `open db.sqlite`; `open` is able to detect databases by looking at file contents.

# Full translation of the book to Chinese (hustcer)

The book is now fully translated to [Chinese (zh-CN)](https://www.nushell.sh/zh-CN/book/). Huge shout-out to hustcer for doing all the work on the translation!

# More completions (herlon214, sophiajt)

Nushell can now complete record fields, cell paths in variables created in previous REPL runs, and more.

Starting with 0.62, Nushell will prefer to wrap filenames with spaces in backticks when completing. This allows for filenames to have single quotes, while also being compatible with upcoming improvements in filename handling.

# New commands

- [`watch`](https://github.com/nushell/nushell/pull/5331) can now watch a filepath and run a block if a change occurs (rgwood)

# Quality-of-life Improvements

- `ctrl+o` - opens your editor of choice to edit line input (elferherrera)
  - Make sure to set `buffer_editor` in your configuration so Nushell can find your editor
- You can use `()` in create filenames. eg) `ls ./($dirname)` (sophiajt)
  - Note: this currently only works if the `()` isn't the start of the filepath
- `ctrl+c` now breaks in more cases (gipsyh)
- `$nu.os-info` can give you information about the platform Nushell is running on. (fdncred)
- `~user` is now a known path shorthand (merelymyself)'
- Errors now have helpful descriptions that will show up in the error docs. (zkat)
- Nushell now has [better shell integration](https://github.com/nushell/nushell/pull/5162) for terminals like kitty. (schrieveslaach)

- **Note:** this is a shortened list. For the full list, see the "Changelog" section below

# Breaking changes

- `^=` is now `starts-with`
- config is now an environment variable
  - To update, move `let config = ...` to `let-env config = ...`
  - This change was done for performance reasons and gives considerable performance improvements in some use cases.

# Looking ahead

The `db` command joins the `dfr` command in a set of experiments we're working on to better understand how to integrate Nushell with a wider set of data sources. Coming up soon are "lazy dataframes". These, like the new `db` command, will allow you to build up a query against a dataframe before you execute it. This allows for much more efficient processing of the request against the data source.

The Nushell design team is deep in discussions about how to make this more universal, allowing the Nushell language to build up queries lazily against a data source, and allowing the data source to perform the optimal native query. There's more research to do here, but we're looking forward to being able to take what we've learned and grow the Nushell language. In the end, we hope, you won't need separate command sets for each data source type. Instead, you'll be able to connect and build your query all in the base Nushell language.

# Changelog

## Nushell

- sholderbach created [Pin reedline to v0.5.0 for the next release](https://github.com/nushell/nushell/pull/5427), and [Fix CI to run doctests again](https://github.com/nushell/nushell/pull/5410), and [Bump reedline](https://github.com/nushell/nushell/pull/5404), and [Set to reedline main branch for development cycle](https://github.com/nushell/nushell/pull/5249)
- elferherrera created [added open editor event in config parsing](https://github.com/nushell/nushell/pull/5426), and [Database commands](https://github.com/nushell/nushell/pull/5417), and [Line buffer keybinding](https://github.com/nushell/nushell/pull/5390), and [Line buffer editor](https://github.com/nushell/nushell/pull/5381), and [Database commands](https://github.com/nushell/nushell/pull/5343), and [Database commands](https://github.com/nushell/nushell/pull/5307)
- zhiburt created [Fix coloring when string has spaces](https://github.com/nushell/nushell/pull/5425)
- sophiajt created [Update path completions to handle spaces](https://github.com/nushell/nushell/pull/5419), and [Rename =^ to 'starts-with'](https://github.com/nushell/nushell/pull/5407), and [More escaping/unescaping fixes](https://github.com/nushell/nushell/pull/5403), and [Adds error printing back in a couple places](https://github.com/nushell/nushell/pull/5400), and [Add unescaping to external command parsing](https://github.com/nushell/nushell/pull/5399), and [Move uses of trim_quotes to unescape for filenames](https://github.com/nushell/nushell/pull/5398), and [Make if else more lazy](https://github.com/nushell/nushell/pull/5386), and [Fix 'range' range exclusive](https://github.com/nushell/nushell/pull/5334), and [Allow bare words to interpolate](https://github.com/nushell/nushell/pull/5327), and [Warn if we see let config = ..](https://github.com/nushell/nushell/pull/5318), and [Fix cd -](https://github.com/nushell/nushell/pull/5301), and [Add 'and' and 'or' operators](https://github.com/nushell/nushell/pull/5297), and [Use better quoting for commandline args](https://github.com/nushell/nushell/pull/5271), and [Some cleanups for clippy](https://github.com/nushell/nushell/pull/5266), and [move config back to config.nu](https://github.com/nushell/nushell/pull/5237), and [Move config to be an env var](https://github.com/nushell/nushell/pull/5230)
- Tropid created [Fix erroneous removal of "./" folder prefix](https://github.com/nushell/nushell/pull/5416), and [Update reedline to use partial completion changes](https://github.com/nushell/nushell/pull/5401), and [Remove "./" prefix for file path completions](https://github.com/nushell/nushell/pull/5387), and [Fuzzy completion matching](https://github.com/nushell/nushell/pull/5320), and [Add MatchAlgorithm for completion suggestions](https://github.com/nushell/nushell/pull/5244), and [Feature/refactor completion options](https://github.com/nushell/nushell/pull/5228)
- stormasm created [remove ctrl-l from config.nu as a way to clear scrollback](https://github.com/nushell/nushell/pull/5415), and [event ClearScrollback is working in reedline / update config.nu](https://github.com/nushell/nushell/pull/5405), and [cleanup version command and add in database feature](https://github.com/nushell/nushell/pull/5356), and [mute false import warning for nu-command test where\_](https://github.com/nushell/nushell/pull/5350), and [add newlines to the end of the default config files](https://github.com/nushell/nushell/pull/5256)
- gipsyh created [Fixed ctrl-c in recursion loop bug #5362](https://github.com/nushell/nushell/pull/5409), and [Fixed interrupting a for-loop over a list bug #5378](https://github.com/nushell/nushell/pull/5408), and [Don't resuggest accepted completions](https://github.com/nushell/nushell/pull/5369), and [Fix use of `export/alias --help` bug](https://github.com/nushell/nushell/pull/5332)
- rgwood created [CI: Add job to build plugins](https://github.com/nushell/nushell/pull/5406), and [Add Miette "fancy" feature to fix plugin builds](https://github.com/nushell/nushell/pull/5402), and [CI: build virtualenv tests in dev profile for speed](https://github.com/nushell/nushell/pull/5396), and [Error printing changes for `watch`](https://github.com/nushell/nushell/pull/5389), and [Faster CI](https://github.com/nushell/nushell/pull/5374), and [rust-cache fix](https://github.com/nushell/nushell/pull/5359), and [CI: remove rust-cache from virtualenv tests](https://github.com/nushell/nushell/pull/5358), and [CI: make Clippy reuse build artifacts, other cleanup](https://github.com/nushell/nushell/pull/5357), and [CI: enable rust-cache, remove minimal](https://github.com/nushell/nushell/pull/5354), and [Openssl feature](https://github.com/nushell/nushell/pull/5352), and [Statically link OpenSSL](https://github.com/nushell/nushell/pull/5349), and [`db info` tweaks](https://github.com/nushell/nushell/pull/5338), and [Add watch command](https://github.com/nushell/nushell/pull/5331), and [Move print_pipeline_data() to nu-protocol](https://github.com/nushell/nushell/pull/5328), and [Clean up tests and unused documentation code](https://github.com/nushell/nushell/pull/5273), and [Clean up unused files in repo root](https://github.com/nushell/nushell/pull/5272), and [Handle custom values in `describe`](https://github.com/nushell/nushell/pull/5248), and [SQLite overhaul: custom value, `query db` command](https://github.com/nushell/nushell/pull/5247)
- panicbit created [Add ends-with operator and fix dataframe operator behavior](https://github.com/nushell/nushell/pull/5395)
- fdncred created [a little database cleanup](https://github.com/nushell/nushell/pull/5394), and [allows for nushell to have tables without the index column](https://github.com/nushell/nushell/pull/5380), and [Revert "nu-cli/completions: better fix for files with special characters"](https://github.com/nushell/nushell/pull/5372), and [fixes an issue with an empty selector panic](https://github.com/nushell/nushell/pull/5345), and [`db info` command](https://github.com/nushell/nushell/pull/5335), and [add database feature to extra](https://github.com/nushell/nushell/pull/5322), and [update build status badge](https://github.com/nushell/nushell/pull/5321), and [update contrib to max=500](https://github.com/nushell/nushell/pull/5317), and [update sys with new items, add kernel version to os-info](https://github.com/nushell/nushell/pull/5308), and [consolidate shell integration behind config setting](https://github.com/nushell/nushell/pull/5302), and [add virtualenv to integrations](https://github.com/nushell/nushell/pull/5280), and [update os-info os to name](https://github.com/nushell/nushell/pull/5265), and [add os to $nu based on rust's understanding](https://github.com/nushell/nushell/pull/5243)
- kubouch created [Fix PATH update example](https://github.com/nushell/nushell/pull/5393)
- herlon214 created [nu-cli/completions: complete external args as filepath](https://github.com/nushell/nushell/pull/5385), and [nu-cli/completions: apply correctly nesting for env vars](https://github.com/nushell/nushell/pull/5382), and [nu-command/filesystem: remove newline from cd path](https://github.com/nushell/nushell/pull/5310), and [nu-cli/completions: add completion for $nu](https://github.com/nushell/nushell/pull/5303), and [nu-cli: directory syntax shape + completions](https://github.com/nushell/nushell/pull/5299), and [nu-cli/completions: support record for custom completion](https://github.com/nushell/nushell/pull/5298), and [nu-cli/completions: better fix for files with special characters](https://github.com/nushell/nushell/pull/5254), and [nu-cli/completions: fix file completions with quotes](https://github.com/nushell/nushell/pull/5242), and [nu-cli: added tests for file completions](https://github.com/nushell/nushell/pull/5232)
- uasi created [Fix quoting for command line args](https://github.com/nushell/nushell/pull/5384), and [Avoid using time conversion methods that may panic](https://github.com/nushell/nushell/pull/5365)
- jmoore34 created [Change description of `sort`](https://github.com/nushell/nushell/pull/5355)
- efx created [improve inc plugin docs](https://github.com/nushell/nushell/pull/5346)
- xgillard created [activates optional trim in 'from csv' and 'from tsv'](https://github.com/nushell/nushell/pull/5326)
- merelymyself created [Allows cd (and other commands that depend on current working directory) to use path of type '~user'](https://github.com/nushell/nushell/pull/5323), and [Adding ~user tilde recognition in file paths](https://github.com/nushell/nushell/pull/5251), and [Added search terms to math commands](https://github.com/nushell/nushell/pull/5224)
- jokeyrhyme created [fix: remove `println!()` from `exec` builtin](https://github.com/nushell/nushell/pull/5311)
- babalolajnr created [feat: add search terms to date](https://github.com/nushell/nushell/pull/5306)
- raboof created [typo: seach -> search](https://github.com/nushell/nushell/pull/5264), and [git completion: 'git fetch' for remotes](https://github.com/nushell/nushell/pull/5253)
- jaeheonji created [feat: add search terms to `conversions`](https://github.com/nushell/nushell/pull/5259)
- pinjeff created [refactor html module](https://github.com/nushell/nushell/pull/5246)
- Yethal created [allow par-each to receive $in](https://github.com/nushell/nushell/pull/5229)
- Sygmei created [add custom_completion field to `$nu.scope.commands` command](https://github.com/nushell/nushell/pull/5227)
- zkat created [update miette and switch to GenericErrors](https://github.com/nushell/nushell/pull/5222), and [documented ShellError errors.](https://github.com/nushell/nushell/pull/5172)
- filaretov created [Simplify known external tests](https://github.com/nushell/nushell/pull/5219), and [Add known external tests](https://github.com/nushell/nushell/pull/5216), and [Simplify known external name recovery](https://github.com/nushell/nushell/pull/5213)
- homburg created [`nth` -> `select` command](https://github.com/nushell/nushell/pull/5217)
- andrasio created [Remove 'empty' block support reminders, for now.](https://github.com/nushell/nushell/pull/5214)
- strega-nil created [[ls, path relative-to] Fix use of `ls ~ | path relative-to ~`](https://github.com/nushell/nushell/pull/5212), and [don't join paths to cwd ever in calls to external functions](https://github.com/nushell/nushell/pull/5180)
- herlon214 created [nu-cli/completions: completion for use and source](https://github.com/nushell/nushell/pull/5210), and [nu-cli/completions: removed unnecessary bool](https://github.com/nushell/nushell/pull/5207), and [Completion for variables of type Record](https://github.com/nushell/nushell/pull/5204), and [nu-cli/completions: add completion for $env.](https://github.com/nushell/nushell/pull/5199)
- fdncred created [add hex color parsing to ansi](https://github.com/nushell/nushell/pull/5209), and [updated cargo.lock with cargo update](https://github.com/nushell/nushell/pull/5201), and [tweak ci building badge](https://github.com/nushell/nushell/pull/5187), and [allow default color shortcut names](https://github.com/nushell/nushell/pull/5177)
- stormasm created [cleanup nu-command, remove redundant code](https://github.com/nushell/nushell/pull/5208), and [update crate chrono-tz to its latest version](https://github.com/nushell/nushell/pull/5184)
- sophiajt created [Move to dev version 0.61.1](https://github.com/nushell/nushell/pull/5206)
- uasi created [Fix env capture](https://github.com/nushell/nushell/pull/5205)
- dantswain created [Avoid duplicating post headers](https://github.com/nushell/nushell/pull/5200)
- ZetaNumbers created [fix: reduce command have not redirected block's evaluation output](https://github.com/nushell/nushell/pull/5193)
- nibon7 created [fix timestamp parsing on 32-bit platforms](https://github.com/nushell/nushell/pull/5192)
- hustcer created [Fix completions for `git push` and `git checkout` close: #5021 and #4599](https://github.com/nushell/nushell/pull/5188), and [Add a dockerfile example based on debian bullseye-slim](https://github.com/nushell/nushell/pull/5176)
- tiffany352 created [Add `char -i` for chars from integers](https://github.com/nushell/nushell/pull/5183), and [Allow passing an integer to `char -u`](https://github.com/nushell/nushell/pull/5174)
- rgwood created [Initial SQLite functionality](https://github.com/nushell/nushell/pull/5182)
- schrieveslaach created [Shell Integration](https://github.com/nushell/nushell/pull/5162)

## Documentation

- hustcer created [Update zh-CN docs](https://github.com/nushell/nushell.github.io/pull/427), and [feat: Add github action related stuff](https://github.com/nushell/nushell.github.io/pull/425), and [More proofreading work for the zh-CN translations](https://github.com/nushell/nushell.github.io/pull/422), and [Fix some broken links](https://github.com/nushell/nushell.github.io/pull/421), and [Some proofreading work for zh-CN translations](https://github.com/nushell/nushell.github.io/pull/420), and [Update zh-CN translations to the latest english version of commit: b6c91cabfa](https://github.com/nushell/nushell.github.io/pull/419), and [Update some node modules](https://github.com/nushell/nushell.github.io/pull/417), and [Translate dataframes.md to zh-CN from commit: 92fb0ac2c](https://github.com/nushell/nushell.github.io/pull/415), and [Add basic config and pages for Turkish](https://github.com/nushell/nushell.github.io/pull/414), and [Add translation guide](https://github.com/nushell/nushell.github.io/pull/413), and [Translate line_editor.md to zh-CN from commit: e0688a346](https://github.com/nushell/nushell.github.io/pull/412), and [Update i18n.nu add `outdated` command to check outdated translations](https://github.com/nushell/nushell.github.io/pull/408), and [Translate coloring_and_theming.md to zh-CN from commit: f3dc86d3d](https://github.com/nushell/nushell.github.io/pull/407), and [Translate some small docs to zh-CN from commit: f5987a82d](https://github.com/nushell/nushell.github.io/pull/403), and [Fix some typo and Translate configuration &amp; environment to zh-CN from commit: f5987a82d](https://github.com/nushell/nushell.github.io/pull/400), and [Translate lots of small docs to zh-CN from commit: ae23eeba3](https://github.com/nushell/nushell.github.io/pull/396)
- reillysiemens created [Fix broken nu_scripts repo link](https://github.com/nushell/nushell.github.io/pull/426)
- merelymyself created [Changed the confusing title of "Working With Strings"](https://github.com/nushell/nushell.github.io/pull/424)
- Yethal created [Update working_with_tables.md](https://github.com/nushell/nushell.github.io/pull/418)
- morzel85 created [Update loading_data.md](https://github.com/nushell/nushell.github.io/pull/416)
- stormasm created [update section on aliases for adding pipes and persisting](https://github.com/nushell/nushell.github.io/pull/411)
- raboof created [fix typo required->require](https://github.com/nushell/nushell.github.io/pull/410)
- rgwood created [Document PATH configuration](https://github.com/nushell/nushell.github.io/pull/406)
- Sygmei created [Fix "Concatenate tables" section from "Table docs"](https://github.com/nushell/nushell.github.io/pull/402)
- Cyborus04 created [Fix command-less `cd` example](https://github.com/nushell/nushell.github.io/pull/399)
- Szune created [Typo fix in 2022-04-12-nushell_0_61.md](https://github.com/nushell/nushell.github.io/pull/398)
- fennewald created [Update coming_from_bash.md](https://github.com/nushell/nushell.github.io/pull/397)

## Nu scripts

- fdncred created [update get_os_icon for wsl](https://github.com/nushell/nu_scripts/pull/214), and [update type-o for windows](https://github.com/nushell/nu_scripts/pull/213), and [use $nu.os-info vs (sys).host for speed](https://github.com/nushell/nu_scripts/pull/212)
- raboof created [custom completions: git: 'git fetch'](https://github.com/nushell/nu_scripts/pull/210)
- Yethal created [Update nuschiit.nu](https://github.com/nushell/nu_scripts/pull/208), and [Add webscraping and gitlab scanning scripts](https://github.com/nushell/nu_scripts/pull/206)
- kubouch created [Change conda activation scripts to be a module](https://github.com/nushell/nu_scripts/pull/205)
- hustcer created [Fix completions for `git push` and `git checkout`](https://github.com/nushell/nu_scripts/pull/204)
- ZetaNumbers created [fix: make complitions referred to undefinded "nu-complete files"](https://github.com/nushell/nu_scripts/pull/203)

## reedline

- sholderbach created [Change keybinding for external editor](https://github.com/nushell/reedline/pull/422), and [Prepare the 0.5.0 release](https://github.com/nushell/reedline/pull/421), and [Fix README and lib.rs code examples](https://github.com/nushell/reedline/pull/419), and [Add doctests back to the CI](https://github.com/nushell/reedline/pull/418), and [Vi additions and fixes by @zim0369](https://github.com/nushell/reedline/pull/417), and [Attempt fix of `ClearScrollback`](https://github.com/nushell/reedline/pull/416), and [Fix the CI badge](https://github.com/nushell/reedline/pull/415), and [Change the CI to use caching](https://github.com/nushell/reedline/pull/414), and [Add better options for screen clearing](https://github.com/nushell/reedline/pull/400), and [Add explicit `EditCommand::InsertNewline`](https://github.com/nushell/reedline/pull/399)
- elferherrera created [Buffer editor keybinding](https://github.com/nushell/reedline/pull/413), and [line buffer editor](https://github.com/nushell/reedline/pull/411)
- Tropid created [Only partial complete suggestions when input is a prefix](https://github.com/nushell/reedline/pull/412)
- gipsyh created [Append whitespace after selecting menu](https://github.com/nushell/reedline/pull/410)
- zim0369 created [Add vim's `C` binding](https://github.com/nushell/reedline/pull/405), and [Implements vim's prepend to start binding](https://github.com/nushell/reedline/pull/403)

Chunks
dda80d66 (1st chunk of `blog/2022-05-03-nushell_0_62.md`)
b8e9f003 (2nd chunk of `blog/2022-05-03-nushell_0_62.md`)
76fdb59a (3rd chunk of `blog/2022-05-03-nushell_0_62.md`)
efa7129c (4th chunk of `blog/2022-05-03-nushell_0_62.md`)
2c6160f3 (5th chunk of `blog/2022-05-03-nushell_0_62.md`)
ea734d76 (6th chunk of `blog/2022-05-03-nushell_0_62.md`)
ef359942 (7th chunk of `blog/2022-05-03-nushell_0_62.md`)
9acc5a08 (8th chunk of `blog/2022-05-03-nushell_0_62.md`)