def для core
Определить пользовательскую команду.
Сигнатура
> def {flags} (def_name) (params) (block)
Флаги
-
--env: Сохраняет окружение, определённое внутри команды. -
--wrapped: Интерпретирует неизвестные флаги и аргументы как строки (требуется параметр, похожий на ...rest, в сигнатуре).
Параметры
-
def_name: Имя определяемой команды. -
params: Параметры команды — список через запятую внутри []. -
block: Тело команды — список инструкций внутри {}.
Типы входных и выходных данных:
| входные данные | выходные данные |
|---|---|
| ничего | ничего |
Примеры
Определите команду и выполните её.
> def say-hi [] { echo 'hi' }; say-hi
hiОпределите команду и выполните её с параметрами.
> def say-sth [sth: string] { echo $sth }; say-sth hi
hiУстановите переменную окружения, вызвав пользовательскую команду.
> def --env foo [] { $env.BAR = "BAZ" }; foo; $env.BAR
BAZКоманда cd изменяет окружение, поэтому для смены каталога внутри команды требуется флаг '--env'.
> def --env gohome [] { cd ~ }; gohome; $env.PWD == ('~' | path expand)
trueОпределите пользовательскую обёртку для внешней команды.
> def --wrapped my-echo [...rest] { ^echo ...$rest }; my-echo -e 'spam\tspam'
spamspamОпределите пользовательскую команду с сигнатурой типов. Передача значения, не являющегося int, приведёт к ошибке.
> def only_int []: int -> int { $in }; 42 | only_int
42Примечания
Эта команда является ключевым словом парсера. Подробнее см. 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