🙌

最近話題の Nushell の Quick Tour やってみた

2023/12/27に公開

はじめに

Nushell というシェルが気になっていたので、Quick Tour | Nushell をやってみました。

事前準備

Installing Nu

まずは Nu の Install です。

Nu の Install 方法はニーズに合わせて様々な方法が用意されています。

Installing Nu | Nushell

自分は brew でインストールしました。

nu を実行すると、Nushell が起動できます。

nu
     __  ,
 .--()°'.' Welcome to Nushell,
'|, . ,'   based on the nu language,
 !_-(_\    where all data is structured!

Please join our Discord community at https://discord.gg/NtAbbGn
Our GitHub repository is at https://github.com/nushell/nushell
Our Documentation is located at https://nushell.sh
Tweet us at @nu_shell
Learn how to remove this at: https://nushell.sh/book/configuration.html#remove-welcome-message

It's been this long since Nushell's first commit:
4yrs 7months 15days 10hrs 18mins 41secs 820ms 792µs

Startup Time: 57ms 55µs 875ns

~>                                                                                                                     12/26/23 12:17:53 PM

Default Shell

次に、Nushell を Default shell にする方法の紹介です。

Default shell | Nushell

今回は Nushell の検証なので、ここは飛ばしました。

Quick Tour

ここからが本題です。

詳細は公式サイトに載っているので、ここでは重要なところを掻い摘んで紹介していこうと思います。

まず、Nushell には様々なビルトインコマンドが用意されていて、例えば ls コマンドの結果も、zsh などと異なるものとなっています。

また、コマンドの前に ^ をつけて ^ls のようにすると、Nu の外部コマンドを実行できるようになっています。

> ls
╭────┬───────────────────────┬──────┬───────────┬─────────────╮
│ #  │         name          │ type │   size    │  modified   │
├────┼───────────────────────┼──────┼───────────┼─────────────┤
│  0404.html              │ file429 B │ 3 days ago  │
│  1 │ CONTRIBUTING.md       │ file955 B │ 8 mins ago  │
│  2 │ Gemfile               │ file1.1 KiB │ 3 days ago  │
│  3 │ Gemfile.lock          │ file6.9 KiB │ 3 days ago  │
│  4 │ LICENSE               │ file1.1 KiB │ 3 days ago  │
│  5 │ README.md             │ file213 B │ 3 days ago  │
...

~> ^ls                                                                                                                 12/26/23 12:39:00 PM
Applications		Desktop			Library			Pictures		repositories ...

そして、Nu はビルトインコマンドで出力されるようなテーブルの扱いを簡単にするコマンドがいくつか用意されています。

これが Nu の一つの特徴でもあります。

sort-by, reverse, where などの使用例。

> ls | sort-by size | reverse
╭────┬───────────────────────┬──────┬───────────┬─────────────╮
│ #  │         name          │ type │   size    │  modified   │
├────┼───────────────────────┼──────┼───────────┼─────────────┤
│  0 │ Gemfile.lock          │ file6.9 KiB │ 3 days ago  │
│  1 │ SUMMARY.md            │ file3.7 KiB │ 3 days ago  │
│  2 │ Gemfile               │ file1.1 KiB │ 3 days ago  │
│  3 │ LICENSE               │ file1.1 KiB │ 3 days ago  │
│  4 │ CONTRIBUTING.md       │ file955 B │ 9 mins ago  │
│  5 │ books.md              │ file687 B │ 3 days ago  │
...
> ls | where size > 1kb
╭───┬───────────────────┬──────┬─────────┬────────────╮
│ # │       name        │ type │  size   │  modified  │
├───┼───────────────────┼──────┼─────────┼────────────┤
│ 0 │ Gemfile           │ file1.1 KiB │ 3 days ago │
│ 1 │ Gemfile.lock      │ file6.9 KiB │ 3 days ago │
│ 2 │ LICENSE           │ file1.1 KiB │ 3 days ago │
│ 3 │ SUMMARY.md        │ file3.7 KiB │ 3 days ago │
╰───┴───────────────────┴──────┴─────────┴────────────╯

また、get コマンドを使うことで、Column 内の Contents をさらに深く探索することも可能です。

> sys
╭───────┬───────────────────╮
│ host{record 6 fields} │
│ cpu   │ [table 4 rows]    │
│ disks │ [table 3 rows]    │
│ mem   │ {record 4 fields} │
│ temp  │ [table 1 row]     │
│ net   │ [table 4 rows]    │
╰───────┴───────────────────╯
> sys | get host
╭────────────────┬────────────────────────╮
│ name           │ Debian GNU/Linux       │
│ os version     │ 11                     │
│ kernel version │ 5.10.92-v8+            │
│ hostname       │ lifeless               │
│ uptime         │ 19day 21hr 34min 45sec │
│ sessions       │ [table 1 row]          │
╰────────────────┴────────────────────────╯

each コマンドを使って、xargs のようなことも直観的にできるようになっています。

> sys | get host.sessions.name | each { |it| ^echo $it }
jt

また、ここまで出てきた Nushell のビルトインコマンドは、help COMMANDS の形でガイドを参照することができるようになっていました。

以上で Quick Tour は終わりです。

おわりに

Quck Tour をやってみた感想としては、zsh などよりもデフォルトで得られる情報量が多い点、出力されたテーブルを直観的に操作できる点が特徴的だなと思いました。

また、データがテーブルとして綺麗に整形されて出力されるので、実行結果が見やすい点は非常に魅力的でした。

まだデフォルトシェルにするには心許ないので、引き続きドキュメントを見ながら色々と検証してみようと思います。

参考

Quick Tour | Nushell

GitHubで編集を提案

Discussion