Nushell – powłoka z nowym pomysłem

Stary dobry bash ma już swoje lata (w tym roku obchodzi 35 urodziny) i trochę się zestarzał. Wciąż odwala kawał dobrej roboty, jest efektywny i intensywnie rozwijany. Ale w ciągu tych lat trochę zmienił się świat i zmieniły komputery. 

To nie jest tak, że nikt nie wpadł na pomysł stworzenia nowej powłoki. Jest ich całkiem sporo, dość długą listę można znaleźć na tej stronie: https://github.com/oilshell/oil/wiki/Alternative-Shells. Niektóre z nich, takie jak fish czy zsh mają już sporą grupę zwolenników. Nie chodzi jednak o przepisanie na nowo narzędzi, a o zupełnie inne podejście do istoty funkcji powłoki.

W tym miejscu spotkamy Nushell. Jest to powłoka działająca w systemach linuksowych oraz w Windows. Projekt jest nowy, ledwo co osiągnął stabilność, ale jest na tyle ciekawy, że warto mu się przyjrzeć.

W bashu wszystko jest plikiem. Pliki można odczytywać, zapisywać, dane z wyjścia można przekierować do dowolnego pliku (czyli praktycznie wszędzie). Powłoka Nu postawiła na dane: wszystko jest danymi. Dane można otwierać, filtrować, zapisywać. Podstawowym widokiem w Nu jest tabela. Nawet wynik działania polecenia ls to tabelka! 

Wynik działania polecenia ls

Obsługiwana jest całkiem przyzwoita liczba różnych formatów danych:

  • csv
  • eml
  • ics
  • ini
  • json
  • nuon
  • ods
  • ssv
  • toml
  • tsv
  • url
  • vcf
  • xlsx / xls
  • xml
  • yaml / yml

Wystarczy wpisać open <nazwa pliku> i otrzymujemy piękną tabelę z zawartością pliku.

Jak widać autor miał ambitne podejście do tematu – są uwzględnione takie formaty jak arkusze LibreOffice, a nawet Excel.

Każdą tabelę można filtrować – wybrać tylko potrzebne kolumny, podać, które wiersze mają być wyświetlone (w bashu mamy tail i head). Można wreszcie skonstruować pytanie, podobne do tych, które są w SQLu, dzięki czemu w masie danych znajdziemy te, które są nam potrzebne.

Zapytanie SQLowe w konsoli?

Twórca powłoki zrewolucjonizował nie tylko wyświetlanie – składnia poleceń jest zupełnie inna niż w bashu. Tak dobrze nam znane przekierowania (>) tutaj nie działają. Znacznie większe znaczenie mają potoki (|). W bashu przekierowanie danych z jednego pliku do innego odbywa się właśnie za pomocą przekierowania, w Nu – zupełnie inaczej:

open dane.xlsx | get Arkusz1 | select column1 

Legenda:

  • open – otwórz plik z danymi
  • get – wybierz arkusz ze skoroszytu
  • select – wybierz kolumnę do wyświetlenia

Nieco inaczej niż w bashu…

A „pod spodem” dzieje się magia. Konwersja z jednego formatu danych na inny jest niezwykle prosta:

open dane.xlsx | get Arkusz1 | save dane.csv 

A po drodze można jeszcze te dane przygotować, przykroić, odfiltrować. Każdy, kto pracuje z zestawami danych w różnych formatach doceni tę wygodę.

Nu nie jest jedyną powłoką, która z powagą traktuje dane. Dla przykładu można by podać Elvish (https://elv.sh/) oraz oilshell (https://www.oilshell.org/). Każde z tych rozwiązań ma swoje pomysły, zalety i wady. Niemniej kierunek ich rozwoju jest ciekawy i wcześniej czy później może się okazać jedynie słuszny.

Kolejną ciekawą cechą Nu są komunikaty o błędach. Nie pozostawiają one użytkownika samemu sobie – w komunikacie znajduje się kontekst, rodzaj błędu oraz – czasem – podpowiedź, co może być nie tak. Całość, ubrana w pseudograficzną szatę i kolory, jest naprawdę czytelna i pomocna. Wobec nowego, nieznanego środowiska takie podpowiedzi mogą stanowić dużą pomoc dla gubiącego się w gąszczu nieznanych poleceń i parametrów użytkownika.

Komunikaty błędów są czytelne i wygodne

Nushell to świeżynka, ale wydaje się odzwierciedlać zmiany w postrzeganiu technologii. W jak technologia się rozwija (i komplikuje), staje się coraz bliższa ludzkiemu punktowi widzenia – przestajemy operować dyskami i plikami, a zaczynamy – danymi i informacjami.

Być może Nushell nie jest jeszcze gotowa, by być używana „produkcyjnie”, ale z pewnością warto się nią zainteresować.

Poprzedni post
Linux Polska

Linux Polska pierwszym SUSE Platinum Partner w Polsce

Następny post

fzf – sprytne uniwersalne szukadełko

Powiązane posty