- PVSM.RU - https://www.pvsm.ru -
На днях был представлен [1] проект nushell [2] (краткое название — Nu). Он появился благодаря идеям из «философии классических конвейеров в Unix, подхода со структурированными данными из PowerShell, функционального программирования, системного программирования и так далее». На GitHub проект лаконично описан как «современный shell эры GitHub, написанный на Rust».
Авторы проекта, вдохновившись возможностями PowerShell и даже несмотря на свои привычки и любовь к Bash/zsh/fish…, руководствовались следующими мыслями при создании нового проекта:
А что, если мы возьмём идеи структурированного шелла и сделаем его более функциональным (в противовес объектно-ориентированному)? А что, если, как PowerShell, он работал бы в Windows, Linux и macOS? А если, если бы у него были классные сообщения об ошибках?
Результат не заставил себя долго ждать. Исходный код nushell написали на Rust (в проекте активно используются его многочисленные возможности: async/await, async streams, Serde, — а также многочисленные пакеты, т.е. crates) и опубликовали на условиях свободной лицензии MIT. С момента анонса Nu прошло 5 дней, за которые ему удалось собрать уже почти 3000 звёзд на GitHub.
Цели [3] проекта обозначены следующим образом:
Среди базовых команд 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
— преобразовать таблицу в соответствующий текстовый формат;Предусмотрены фильтры [6] и для неструктурированных данных.
Вот, например, как в nushell будет выглядеть отбор файлов размером более 10 килобайт:
… или вывод процессов, нагружающих CPU:
Расширение функциональных возможностей 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
Нажмите здесь для печати.