Spec-Zone.ru › Nushell

def for core

Define a custom command.

Signature

> def {flags} (def_name) (params) (block)

Flags

  • --env: Keep the environment defined inside the command.
  • --wrapped: Treat unknown flags and arguments as strings (requires ...rest-like parameter in signature).

Parameters

  • def_name: The command name to define.
  • params: The command parameters, a comma-separated list inside [].
  • block: The body of the command, a list of instructions inside {}.

Input/output types:

input output
nothing nothing

Examples

Define a command and run it.

> def say-hi [] { echo 'hi' }; say-hi
hi

Define a command and run it with parameter(s).

> def say-sth [sth: string] { echo $sth }; say-sth hi
hi

Set environment variable by call a custom command.

> def --env foo [] { $env.BAR = "BAZ" }; foo; $env.BAR
BAZ

cd affects the environment, so '--env' is required to change directory from within a command.

> def --env gohome [] { cd ~ }; gohome; $env.PWD == ('~' | path expand)
true

Define a custom wrapper for an external command.

> def --wrapped my-echo [...rest] { ^echo ...$rest }; my-echo -e 'spam\tspam'
spamspam

Define a custom command with a type signature. Passing a non-int value will result in an error.

> def only_int []: int -> int { $in }; 42 | only_int
42

Notes

This command is a parser keyword. For details, check: https://www.nushell.sh/book/thinking_in_nu.html

Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/def.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API