Nushell Structured data shell
Light · Postcard
102 × 152 mm · PDF
Dark · Postcard
102 × 152 mm · PDF
Ink saver · Postcard
102 × 152 mm · PDF
Light · A4 landscape
297 × 210 mm · PDF
Dark · A4 landscape
297 × 210 mm · PDF
Ink saver · A4 landscape
297 × 210 mm · PDF
Light · A3 landscape
420 × 297 mm · PDF
Dark · A3 landscape
420 × 297 mm · PDF
Ink saver · A3 landscape
420 × 297 mm · PDF
Start here
ls | where size > 1mb
open <file>
select <col> ...
sort-by <col>
get <col>let <name> = <value>
def <name> [args] { }
help <command>
Concepts
- Source ls, open, ps
- Table rows + columns
- Filtered still structured
- Output text or file
Navigate & files
lsls -als **/*.rscd <dir>mkdir <dir>
cp -r <src> <dst>
mv <src> <dst>
rm -r <path>
Open & convert
open <file>
open --raw <file>
save <file>
from json / from yaml / from csv
to json / to yaml / to csv
http get <url>
Filter & shape
where <col> == <val>
where {|r| $r.size > 1kb }
select <col> <col>
reject <col>
get <col>get a.b.0sort-by <col>
sort-by -r <col>
first <n> / last <n>
skip <n>each {|x| ... }lengthupdate <col> {|r| ... }
insert <col> {|r| ... }
Strings & text
$"hello ($name)"
str replace <a> <b>
str replace -r <re> <b>
str contains <text>
split row <sep>
lines=~ / !~Variables & flow
let <name> = <value>
mut <name> = <value>
if <cond> { } else { }
for i in 1..5 { print $i }
try { } catch { }
$in{a: 1, b: 2}[1 2 3]Commands & modules
def <name> [x: int] { }
def <name> [--flag, --opt: string] { }
def <name> [x?: int] { }
{|x| $x * 2 }alias <name> = <cmd>
use <module>
nu <script.nu>
help commandshelp <command>
Environment & config
$env.FOO = "bar"
$env.FOO?$env.PATH ++= ["~/bin"]
config nuExternals & I/O
^<cmd>cmd | completeBash to Nushell
| Bash | Nushell |
|---|---|
export FOO=bar |
$env.FOO = "bar" |
echo $FOO |
$env.FOO |
a && b |
a; b |
a || b |
try { a } catch { b } |
echo "x $(cmd)" |
$"x (cmd)" |
cmd | head -5 |
cmd | first 5 |
cat file |
open --raw file |
unset FOO |
hide-env FOO |
find . -name '*.rs' |
ls **/*.rs |
cmd > file 2>&1 |
cmd o+e> file |
Recipes
ls **/* | where type == file | sort-by size | reverse | first 10 | select name size
open package.json | update version "2.0.0" | save -f package.json
http get https://api.github.com/repos/nushell/nushell/releases | select tag_name published_at | first 5 | to csv
def greet [name: string, --loud] { if $loud { $name | str upcase } else { $name }}



