Статус проекта и философия данных
Проект Nushell (Nu) официально достиг уровня Minimum-Viable-Product (MVP). Команда заявляет, что многие пользователи уже используют его как основную оболочку (daily driver), хотя некоторые команды могут оставаться нестабильными. В версии 0.72.0 (указана в метаданных Cargo.toml) акцент сделан на отказе от обработки данных как «сырого текста» в пользу структурированных моделей.
В отличие от традиционных Unix-оболочек, Nushell рассматривает каждый вход как структурированный объект. Например, команда ls возвращает не текст, а таблицу строк, где каждая строка — это объект с полями (имя, тип, размер, дата изменения). Это позволяет применять фильтрацию и трансформации напрямую к полям данных.
Пайплайны и работа со структурой
Ключевая особенность Nu — использование пайплайнов для передачи структурированных данных между командами. Команды делятся на три категории:
- Производители потока (Stream producers): например,
ls,ps. - Фильтры (Stream filters): например,
where,select. - Потребители (Sinks): например,
tableдля отображения,saveдля записи.
По умолчанию вывод пайплайна отображается в виде таблицы через команду table, что делает интерфейс интуитивным для анализа данных.
Примеры работы с данными
Ниже приведены примеры того, как Nushell обрабатывает данные в сравнении с традиционным подходом:
| Команда / Контекст | Результат / Структура | Примечание |
|---|---|---|
ls | where type == "dir" |
Таблица с колонками: #, name, type, size, modified | Фильтрация директорий с сохранением структуры таблицы |
ps | where cpu > 10 |
Таблица процессов: pid, name, cpu, mem, virtual | Пример: Slack.exe потребляет ~16% CPU |
open Cargo.toml | get package.version |
Значение: 0.72.0 |
Прямое извлечение поля из TOML-файла как из объекта |
Архитектура плагинов и JSON-RPC
Nushell поддерживает плагины, которые расширяют функциональность через простой протокол JSON-RPC. Плагины должны следовать соглашению об именовании nu_plugin_* и быть доступны в PATH.
Существует два типа взаимодействия:
- Фильтры (Filters): данные поступают по одному элементу, плагин может возвращать поток данных обратно через stdin/stdout.
- Потребители (Sinks): плагину передается полный вектор данных, он имеет полный доступ к stdin/stdout для произвольной обработки.
Кроссплатформенность и установка
Проект официально поддерживает Windows, macOS и Linux. Установка доступна через популярные менеджеры пакетов:
- Linux/macOS:
brew install nushell - Windows:
winget install nushell
Проект интегрируется с такими инструментами, как starship, oh-my-posh, zoxide и direnv, обеспечивая современный UX, ожидаемый от CLI-инструментов 2022 года и новее.
Источник: Github ↗
