primeira versão do shell de comando , combinando as funcionalidades do Power Shell e dos shells unix clássicos. O código é escrito na linguagem Rust e sob licença MIT. O projeto foi inicialmente desenvolvido como multiplataforma e suporta funcionamento no Windows, macOS e Linux. Para expandir a funcionalidade, podem ser utilizados , com os quais se interage através do protocolo JSON-RPC.
No shell, é utilizada uma sistema de pipelines familiar para usuários Unix no formato "comando|filtros|manipulador de saída". Por padrão, a saída é formatada utilizando o comando autoview, que utiliza um formato tabular, mas também é possível aplicar comandos para exibir dados binários e informações em formato de árvore. Uma das grandes vantagens do nushell é a capacidade de manipular dados estruturados.
O shell permite estruturar a saída de vários comandos e o conteúdo de arquivos, e aplicar filtros arbitrários, que são organizados utilizando uma sintaxe unificada, sem necessidade de aprender as opções de linha de comando de cada comando específico. Por exemplo, o nushell permite usar construições como "ls | where size > 10kb" e "ps | where cpu > 10", que resultarão na exibição de apenas arquivos com tamanho superior a 10Kb e processos que consumiram mais de 10 segundos de recursos de CPU:
Para estruturar os dados, é utilizada uma série de extensões que analisam a saída de comandos específicos e tipos de arquivos. Extensões semelhantes são oferecidas para comandos como cd, ls, ps, cp, mkdir, mv, date, rm (para chamar comandos nativos pode-se usar o prefixo "^", por exemplo, a chamada "^ls" resultará na execução da ferramenta de sistema ls). Existem também comandos especializados, como open para exibir informações sobre um arquivo selecionado de forma tabular. Para os formatos JSON, TOML e YAML, suporta-se a análise automática.
/home/jonathan/Source/nushell(master)> open Cargo.toml
——————+——————+——————
dependências | dev-dependências | pacote
——————+——————+——————
[object Object] | [object Object] | [object Object]
——————+——————+——————
/home/jonathan/Source/nushell(master)> open Cargo.toml | get package
————-+—————————-+———+———+——+———
autores | descrição | edição | licença | nome | versão
————-+—————————-+———+———+——+———
[list List] | Um shell para a era do GitHub | 2018 | MIT | nu | 0.2.0
————-+—————————-+———+———+——+———
/home/jonathan/Source/nushell(master)> open Cargo.toml | get package.version | echo $it
0.2.0
Um grande conjunto de instruções é fornecido para a filtragem de dados estruturados, permitindo descartar linhas, classificar por colunas, somar dados, realizar cálculos simples, usar contadores de valores e converter a saída para formatos CSV, JSON, TOML e YAML. Instruções para dados não estruturados (texto) são oferecidas para dividir em colunas e linhas com base em caracteres delimitadores.
Fonte: opennet.ru
