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!
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.

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.

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ć.