Nushellの導入

Nushellは、構造化データをパイプ渡しできるインタラクティブ・シェルです。
bashなど従来のシェルは、改行やスペースで区切ったテキストをAWKで操作するケースが一般的ですが、Nushellはパイプを流れる内部データはよりリッチなオブジェクトになっています。同様の先行実装には、PowerShellがあります。

使い始める前に Bookをひと通り読むと良いでしょう。

Bashとの比較

Nushellの見た目上の特徴はオブジェクトのテーブル表示ですが、これは利用開始時点では中核的な機能ではないでしょう。
Nuのオブジェクトと従来のテキストパイプは並列して存在しており、従来的なテキストベースの用途についてはbashと同様に使えます。

  • タブ補完、ヒストリなどの基本操作には違いがない。ワイルドカードも表面的には同様の挙動
  • gitリポジトリにcdすると、コマンドプロンプトにブランチ名が表示される
  • /binや/usr/binなどにある外部コマンドの動作には当然違いがない。bashスクリプトなどの動作にも当然違いはない
  • lsdateなどは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で終了します。

中馬崇尋
Chuma Takahiro