
nushell v0.115.0
Новый тип оболочки
Nushell
Оболочка нового типа.

Содержание
- Статус
- Изучение Nu
- Установка
- Конфигурация
- Философия
- Цели
- Официально поддерживается
- Участие в разработке
- Лицензия
Статус
Проект достиг уровня качества минимально жизнеспособного продукта. Многие используют его в качестве основной оболочки, но некоторые команды могут работать нестабильно. Дизайн Nu может меняться по мере развития проекта.
Изучение Nu
Книга Nushell — основной источник документации по Nushell. В книге вы найдёте полный список команд Nu, а также множество примеров использования Nu в нашем сборнике рецептов.
Мы также активны в Discord — заходите пообщаться!
Установка
Чтобы быстро установить Nu:
# Linux and macOS
brew install nushell
# Windows
winget install nushell
Чтобы использовать Nu в GitHub Action, обратитесь к setup-nu за подробностями.
Подробные инструкции по установке можно найти в главе об установке книги. Nu доступен через множество менеджеров пакетов:
Подробности о том, какие платформы команда Nushell активно поддерживает, см. в нашей политике поддержки платформ.
Конфигурация
Конфигурации по умолчанию можно найти в sample_config — это файлы конфигурации, которые создаются при первом запуске Nushell.
В них задаются все настройки по умолчанию для работы Nushell. Отсюда можно настроить этот файл под свои конкретные нужды.
Чтобы узнать, где находится config.nu в вашей системе, просто введите эту команду.
$nu.config-path
Полную документацию по Nushell см. в нашей книге.
Философия
Nu черпает вдохновение в таких проектах, как PowerShell, функциональных языках программирования и современных инструментах командной строки. Вместо того чтобы рассматривать файлы и данные как необработанные потоки текста, Nu воспринимает каждый вход как нечто обладающее структурой. Например, когда вы выводите содержимое каталога, вы получаете таблицу строк, где каждая строка представляет элемент этого каталога. Эти значения можно передавать через последовательность шагов, в последовательности команд, называемой «конвейером».
Конвейеры
В Unix принято передавать данные между командами через конвейер, чтобы разбить сложную команду на несколько шагов. Nu идёт дальше и активно развивает идею конвейеров. Как и в философии Unix, Nu позволяет командам выводить данные в stdout и читать из stdin. Кроме того, команды могут выводить структурированные данные (это можно рассматривать как третий вид потока). Команды, работающие в конвейере, делятся на три категории:
- Команды, создающие поток (например,
ls) - Команды, фильтрующие поток (например,
where type == "dir") - Команды, потребляющие вывод конвейера (например,
table)
Команды разделяются символом вертикальной черты (|), обозначающим конвейер, текущий слева направо.
ls | where type == "dir" | table
# => ╭────┬──────────┬──────┬─────────┬───────────────╮
# => │ # │ name │ type │ size │ modified │
# => ├────┼──────────┼──────┼─────────┼───────────────┤
# => │ 0 │ .cargo │ dir │ 0 B │ 9 minutes ago │
# => │ 1 │ assets │ dir │ 0 B │ 2 weeks ago │
# => │ 2 │ crates │ dir │ 4.0 KiB │ 2 weeks ago │
# => │ 3 │ docker │ dir │ 0 B │ 2 weeks ago │
# => │ 4 │ docs │ dir │ 0 B │ 2 weeks ago │
# => │ 5 │ images │ dir │ 0 B │ 2 weeks ago │
# => │ 6 │ pkg_mgrs │ dir │ 0 B │ 2 weeks ago │
# => │ 7 │ samples │ dir │ 0 B │ 2 weeks ago │
# => │ 8 │ src │ dir │ 4.0 KiB │ 2 weeks ago │
# => │ 9 │ target │ dir │ 0 B │ a day ago │
# => │ 10 │ tests │ dir │ 4.0 KiB │ 2 weeks ago │
# => │ 11 │ wix │ dir │ 0 B │ 2 weeks ago │
# => ╰────┴──────────┴──────┴─────────┴───────────────╯
Поскольку в большинстве случаев вы захотите увидеть вывод конвейера, table подразумевается.
Мы могли бы также записать вышесказанное так:
ls | where type == "dir"
Возможность использовать одни и те же команды и по-разному их комбинировать — важная философия Nu.
Например, мы могли бы использовать встроенную команду ps, чтобы получить список запущенных процессов, применив тот же where, что и выше.
ps | where cpu > 0
# => ╭───┬───────┬──────┬───────────┬──────┬─────────┬───────┬────────────┬──────────╮
# => │ # │ pid │ ppid │ name │ user │ status │ cpu │ cpu_time │ mem │
# => ├───┼───────┼──────┼───────────┼──────┼─────────┼───────┼────────────┼──────────┤
# => │ 0 │ 2240 │ 9872 │ Slack.exe │ dev │ Running │ 16.40 │ 1min 12sec │ 178.3 MB │
# => │ 1 │ 16948 │ 9872 │ Slack.exe │ dev │ Running │ 16.32 │ 48sec │ 205.0 MB │
# => │ 2 │ 17700 │ 4632 │ nu.exe │ dev │ Running │ 3.77 │ 2sec │ 26.1 MB │
# => ╰───┴───────┴──────┴───────────┴──────┴─────────┴───────┴────────────┴──────────╯
Открытие файлов
Nu может загружать содержимое файлов и URL как необработанный текст или как структурированные данные (если распознаёт формат). Например, вы можете загрузить файл .toml как структурированные данные и исследовать его:
open Cargo.toml
# => ╭──────────────────┬────────────────────╮
# => │ bin │ [table 1 row] │
# => │ dependencies │ {record 25 fields} │
# => │ dev-dependencies │ {record 8 fields} │
# => │ features │ {record 10 fields} │
# => │ package │ {record 13 fields} │
# => │ patch │ {record 1 field} │
# => │ profile │ {record 3 fields} │
# => │ target │ {record 3 fields} │
# => │ workspace │ {record 1 field} │
# => ╰──────────────────┴────────────────────╯
Мы можем передать это в команду, которая получает содержимое одного из столбцов: