- PVSM.RU - https://www.pvsm.ru -

nushell — современный shell, сочетающий Unix-конвейеры и объекты в духе PowerShell

На днях был представлен [1] проект nushell [2] (краткое название — Nu). Он появился благодаря идеям из «философии классических конвейеров в Unix, подхода со структурированными данными из PowerShell, функционального программирования, системного программирования и так далее». На GitHub проект лаконично описан как «современный shell эры GitHub, написанный на Rust».

nushell — современный shell, сочетающий Unix-конвейеры и объекты в духе PowerShell - 1

Авторы проекта, вдохновившись возможностями PowerShell и даже несмотря на свои привычки и любовь к Bash/zsh/fish…, руководствовались следующими мыслями при создании нового проекта:

А что, если мы возьмём идеи структурированного шелла и сделаем его более функциональным (в противовес объектно-ориентированному)? А что, если, как PowerShell, он работал бы в Windows, Linux и macOS? А если, если бы у него были классные сообщения об ошибках?

Результат не заставил себя долго ждать. Исходный код nushell написали на Rust (в проекте активно используются его многочисленные возможности: async/await, async streams, Serde, — а также многочисленные пакеты, т.е. crates) и опубликовали на условиях свободной лицензии MIT. С момента анонса Nu прошло 5 дней, за которые ему удалось собрать уже почти 3000 звёзд на GitHub.

Цели [3] проекта обозначены следующим образом:

  • Кроссплатформенность. Применяемые команды и техники должны переноситься между платформами. Обеспечивается полноценная поддержка операционных систем Windows, macOS и Linux.
  • Совместимость с существующими специфичными для платформ бинарниками, стоящими во главе привычных для многих рабочих процессов (в качестве примеров авторы приводят git и vim).
  • Соответствие актуальных на сегодня ожиданиям по удобству использования командной оболочки.
  • Объектный shell (как PowerShell), предлагающий структурированное и неструктурированное представления данных.
  • Использование конвейеров (как Unix pipelines) для загрузки, изменения и сохранения данных без их фактического изменения.

Среди базовых команд nushell заявлены не нуждающиеся в особых комментариях cd, cp, ls, mkdir, mv, date, ps, rm, exit и другие [4]. Куда интереснее могут оказаться доступные фильтры. Вот некоторые их примеры для структурированных данных (таблиц):

  • pick и reject — выбрать/убрать столбцы для отображения;
  • sort-by — сортировать по столбцам;
  • where — условие для выборки;
  • add — добавить новое поле;
  • sum — суммирования значения в столбце;
  • to-array, from-array — преобразовать строки в массив (список) и наоборот;
  • to-json, to-toml, to-yaml, to-csv — преобразовать таблицу в соответствующий текстовый формат;
  • и другие [5]!

Предусмотрены фильтры [6] и для неструктурированных данных.

Вот, например, как в nushell будет выглядеть отбор файлов размером более 10 килобайт:

nushell — современный shell, сочетающий Unix-конвейеры и объекты в духе PowerShell - 2

… или вывод процессов, нагружающих CPU:

nushell — современный shell, сочетающий Unix-конвейеры и объекты в духе PowerShell - 3

Расширение функциональных возможностей nushell возможно с помощью плагинов, представляемых в виде бинарников, взаимодействующих с Nu через простой протокол JSON-RPC.

Авторы проекта уже работают над созданием книги про свою оболочку на английском [7] и испанском [8] языках.

Быстро попробовать nushell можно в Docker-контейнере:

$ docker build -t nu .
$ docker run -it nu

… а процесс полноценной установки описан здесь [9].

Автор: shurup

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/328427

Ссылки в тексте:

[1] представлен: http://www.jonathanturner.org/2019/08/introducing-nushell.html

[2] nushell: https://github.com/nushell/nushell

[3] Цели: https://github.com/nushell/nushell#goals

[4] другие: https://github.com/nushell/nushell#initial-commands

[5] другие: https://github.com/nushell/nushell#filters-on-tables-structured-data

[6] фильтры: https://github.com/nushell/nushell#filters-on-text-unstructured-data

[7] английском: https://book.nushell.sh/en

[8] испанском: https://book.nushell.sh/es

[9] здесь: https://book.nushell.sh/en/installation

[10] Источник: https://habr.com/ru/post/465335/?utm_campaign=465335&utm_source=habrahabr&utm_medium=rss