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.
Where to get it
Nu 0.62 is available as pre-built binaries or from crates.io. 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). 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
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
- Make sure to set
You can use
()
in create filenames. eg)ls ./($dirname)
(sophiajt)- Note: this currently only works if the
()
isn't the start of the filepath
- Note: this currently only works if the
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 for terminals like kitty. (schrieveslaach)
Note: this is a shortened list. For the full list, see the "Changelog" section below
Breaking changes
^=
is nowstarts-with
- config is now an environment variable
- To update, move
let config = ...
tolet-env config = ...
- This change was done for performance reasons and gives considerable performance improvements in some use cases.
- To update, move
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, and Fix CI to run doctests again, and Bump reedline, and Set to reedline main branch for development cycle
- elferherrera created added open editor event in config parsing, and Database commands, and Line buffer keybinding, and Line buffer editor, and Database commands, and Database commands
- zhiburt created Fix coloring when string has spaces
- sophiajt created Update path completions to handle spaces, and Rename =^ to 'starts-with', and More escaping/unescaping fixes, and Adds error printing back in a couple places, and Add unescaping to external command parsing, and Move uses of trim_quotes to unescape for filenames, and Make if else more lazy, and Fix 'range' range exclusive, and Allow bare words to interpolate, and Warn if we see let config = .., and Fix cd -, and Add 'and' and 'or' operators, and Use better quoting for commandline args, and Some cleanups for clippy, and move config back to config.nu, and Move config to be an env var
- Tropid created Fix erroneous removal of "./" folder prefix, and Update reedline to use partial completion changes, and Remove "./" prefix for file path completions, and Fuzzy completion matching, and Add MatchAlgorithm for completion suggestions, and Feature/refactor completion options
- stormasm created remove ctrl-l from config.nu as a way to clear scrollback, and event ClearScrollback is working in reedline / update config.nu, and cleanup version command and add in database feature, and mute false import warning for nu-command test where_, and add newlines to the end of the default config files
- gipsyh created Fixed ctrl-c in recursion loop bug #5362, and Fixed interrupting a for-loop over a list bug #5378, and Don't resuggest accepted completions, and Fix use of
export/alias --help
bug - rgwood created CI: Add job to build plugins, and Add Miette "fancy" feature to fix plugin builds, and CI: build virtualenv tests in dev profile for speed, and Error printing changes for
watch
, and Faster CI, and rust-cache fix, and CI: remove rust-cache from virtualenv tests, and CI: make Clippy reuse build artifacts, other cleanup, and CI: enable rust-cache, remove minimal, and Openssl feature, and Statically link OpenSSL, anddb info
tweaks, and Add watch command, and Move print_pipeline_data() to nu-protocol, and Clean up tests and unused documentation code, and Clean up unused files in repo root, and Handle custom values indescribe
, and SQLite overhaul: custom value,query db
command - panicbit created Add ends-with operator and fix dataframe operator behavior
- fdncred created a little database cleanup, and allows for nushell to have tables without the index column, and Revert "nu-cli/completions: better fix for files with special characters", and fixes an issue with an empty selector panic, and
db info
command, and add database feature to extra, and update build status badge, and update contrib to max=500, and update sys with new items, add kernel version to os-info, and consolidate shell integration behind config setting, and add virtualenv to integrations, and update os-info os to name, and add os to $nu based on rust's understanding - kubouch created Fix PATH update example
- herlon214 created nu-cli/completions: complete external args as filepath, and nu-cli/completions: apply correctly nesting for env vars, and nu-command/filesystem: remove newline from cd path, and nu-cli/completions: add completion for $nu, and nu-cli: directory syntax shape + completions, and nu-cli/completions: support record for custom completion, and nu-cli/completions: better fix for files with special characters, and nu-cli/completions: fix file completions with quotes, and nu-cli: added tests for file completions
- uasi created Fix quoting for command line args, and Avoid using time conversion methods that may panic
- jmoore34 created Change description of
sort
- efx created improve inc plugin docs
- xgillard created activates optional trim in 'from csv' and 'from tsv'
- merelymyself created Allows cd (and other commands that depend on current working directory) to use path of type '~user', and Adding ~user tilde recognition in file paths, and Added search terms to math commands
- jokeyrhyme created fix: remove
println!()
fromexec
builtin - babalolajnr created feat: add search terms to date
- raboof created typo: seach -> search, and git completion: 'git fetch' for remotes
- jaeheonji created feat: add search terms to
conversions
- pinjeff created refactor html module
- Yethal created allow par-each to receive $in
- Sygmei created add custom_completion field to
$nu.scope.commands
command - zkat created update miette and switch to GenericErrors, and documented ShellError errors.
- filaretov created Simplify known external tests, and Add known external tests, and Simplify known external name recovery
- homburg created
nth
->select
command - andrasio created Remove 'empty' block support reminders, for now.
- strega-nil created [ls, path relative-to] Fix use of
ls ~ | path relative-to ~
, and don't join paths to cwd ever in calls to external functions - herlon214 created nu-cli/completions: completion for use and source, and nu-cli/completions: removed unnecessary bool, and Completion for variables of type Record, and nu-cli/completions: add completion for $env.
- fdncred created add hex color parsing to ansi, and updated cargo.lock with cargo update, and tweak ci building badge, and allow default color shortcut names
- stormasm created cleanup nu-command, remove redundant code, and update crate chrono-tz to its latest version
- sophiajt created Move to dev version 0.61.1
- uasi created Fix env capture
- dantswain created Avoid duplicating post headers
- ZetaNumbers created fix: reduce command have not redirected block's evaluation output
- nibon7 created fix timestamp parsing on 32-bit platforms
- hustcer created Fix completions for
git push
andgit checkout
close: #5021 and #4599, and Add a dockerfile example based on debian bullseye-slim - tiffany352 created Add
char -i
for chars from integers, and Allow passing an integer tochar -u
- rgwood created Initial SQLite functionality
- schrieveslaach created Shell Integration
Documentation
- hustcer created Update zh-CN docs, and feat: Add github action related stuff, and More proofreading work for the zh-CN translations, and Fix some broken links, and Some proofreading work for zh-CN translations, and Update zh-CN translations to the latest english version of commit: b6c91cabfa, and Update some node modules, and Translate dataframes.md to zh-CN from commit: 92fb0ac2c, and Add basic config and pages for Turkish, and Add translation guide, and Translate line_editor.md to zh-CN from commit: e0688a346, and Update i18n.nu add
outdated
command to check outdated translations, and Translate coloring_and_theming.md to zh-CN from commit: f3dc86d3d, and Translate some small docs to zh-CN from commit: f5987a82d, and Fix some typo and Translate configuration & environment to zh-CN from commit: f5987a82d, and Translate lots of small docs to zh-CN from commit: ae23eeba3 - reillysiemens created Fix broken nu_scripts repo link
- merelymyself created Changed the confusing title of "Working With Strings"
- Yethal created Update working_with_tables.md
- morzel85 created Update loading_data.md
- stormasm created update section on aliases for adding pipes and persisting
- raboof created fix typo required->require
- rgwood created Document PATH configuration
- Sygmei created Fix "Concatenate tables" section from "Table docs"
- Cyborus04 created Fix command-less
cd
example - Szune created Typo fix in 2022-04-12-nushell_0_61.md
- fennewald created Update coming_from_bash.md
Nu scripts
- fdncred created update get_os_icon for wsl, and update type-o for windows, and use $nu.os-info vs (sys).host for speed
- raboof created custom completions: git: 'git fetch'
- Yethal created Update nuschiit.nu, and Add webscraping and gitlab scanning scripts
- kubouch created Change conda activation scripts to be a module
- hustcer created Fix completions for
git push
andgit checkout
- ZetaNumbers created fix: make complitions referred to undefinded "nu-complete files"
reedline
- sholderbach created Change keybinding for external editor, and Prepare the 0.5.0 release, and Fix README and lib.rs code examples, and Add doctests back to the CI, and Vi additions and fixes by @zim0369, and Attempt fix of
ClearScrollback
, and Fix the CI badge, and Change the CI to use caching, and Add better options for screen clearing, and Add explicitEditCommand::InsertNewline
- elferherrera created Buffer editor keybinding, and line buffer editor
- Tropid created Only partial complete suggestions when input is a prefix
- gipsyh created Append whitespace after selecting menu
- zim0369 created Add vim's
C
binding, and Implements vim's prepend to start binding