Nushellは、構造化データをパイプ渡しできるインタラクティブ・シェルです。
bashなど従来のシェルは、改行やスペースで区切ったテキストをAWKで操作するケースが一般的ですが、Nushellはパイプを流れる内部データはよりリッチなオブジェクトになっています。同様の先行実装には、PowerShellがあります。
使い始める前に Bookをひと通り読むと良いでしょう。
Bashとの比較
Nushellの見た目上の特徴はオブジェクトのテーブル表示ですが、これは利用開始時点では中核的な機能ではないでしょう。
Nuのオブジェクトと従来のテキストパイプは並列して存在しており、従来的なテキストベースの用途についてはbashと同様に使えます。
- タブ補完、ヒストリなどの基本操作には違いがない。ワイルドカードも表面的には同様の挙動
- gitリポジトリにcdすると、コマンドプロンプトにブランチ名が表示される
- /binや/usr/binなどにある外部コマンドの動作には当然違いがない。bashスクリプトなどの動作にも当然違いはない
ls
やdate
などはNu組み込みコマンドが優先される(^ls
で同一名の外部コマンドを実行可能)。set
などのbash組み込みコマンドは当然ない- フィルタに
where
などのNu組み込みコマンドを用いる。awkを使わない - Nuのオブジェクトはテキストではないため、そのままでは
>
や| more
などのテキストリダイレクトと接続しない。cat test.txt | more
は変わりなく動作する
Bashの機能変更ではなく、AWKの役割をNuの組み込みコマンドが置き換えて利便性を強化しています。 コマンド対照表でも概観をつかめます。
インストール
各プラットフォーム向けのバイナリが提供されています。頻繁にバージョンアップしているため、 GitHubのReleasesからビルド済パッケージを取得するのが手軽でしょう。
プラグインを含むバイナリ一式をPATHの通った場所に置くと動作します。
環境変数の移行
bashなどの既存シェルからnu
コマンドでシェルを起動したうえで、以下のコマンドを実行すると、Nuのconfig(~/.config/nu/Config.toml)にインポートできます。
$ config set path $nu.path
$ config set env $nu.env
完了したらexit
で終了します。
⁋ 2020/08/04↻ 2024/12/18
中馬崇尋
Chuma Takahiro
Chuma Takahiro