Open12

nushellもろもろ

hkawahkawa

record関連でkey,valuを取り出す方法がわからんかったが、Utility commands for records: values and pairs (counterparts to columns) #7166となっており、今後のバージョンアップに期待。

Splitoff from #6854. Various programming languages with key-value data structures (records) have three methods for extracting and iterating over their stored data: one for listing the keys, one the values, and one for listing tuples of each pair. Nushell, however, only has columns, which matches the former.

hkawahkawa

Version 0.72が出てました。

  • try/catch サポート
  • Terminalの幅に応じてexpand
    これまではtable --expandでやってたことが、自動でやってくれる。ただterminalの幅が狭いと意味がない。
  • リダイレクトサポート
    ついついリダイレクトで保存しようとしてが、できるようになった。save …とか書くよりは早いかな。。。
  • mutableな変数が作れるようになった。
  • 繰り返し処理にloop/while追加、break/continue追加
  • クロージャ内ですぐ戻れるよう、return追加
  • Ver 1.0に向けてbuilt-inコマンドの仕様が大幅に変更
hkawahkawa

Ver 0.72にしてみました。
念の為、config.nuenv.nuのバックアップをとって、削除してインストールしました。以下新バージョンのnu起動で、設定ファイルを新規作成。

$ nu
No environment config file found at /home/kawa90/.config/nushell/env.nu
Would you like to create one with defaults (Y/n): 
y
Config file created at: /home/kawa90/.config/nushell/env.nu
No config file found at /home/kawa90/.config/nushell/config.nu
Would you like to create one with defaults (Y/n): 
y
Config file created at: /home/kawa90/.config/nushell/config.nu

インストールされたenv.nuは特に変更ないようだ。config.nuconfig($env.config)が多少変わったようだ。

hkawahkawa

Ver0.72でdeprecatedになったbuilt-inコマンド。

〉help commands | where category =~ "deprecated" | reject usage signatures search_terms                                                                        11/30/2022 10:51:38 午後
╭───┬──────────────────┬────────────┬──────────────╮
│ # │       name       │  category  │ command_type │
├───┼──────────────────┼────────────┼──────────────┤
│ 1 │ hash base64      │ deprecated │ builtin      │
│ 2 │ str collect      │ deprecated │ builtin      │
│ 3 │ str find-replace │ deprecated │ builtin      │
│ 4 │ str to-datetime  │ deprecated │ builtin      │
│ 5 │ str to-decimal   │ deprecated │ builtin      │
│ 6 │ str to-int       │ deprecated │ builtin      │
╰───┴──────────────────┴────────────┴──────────────╯
hkawahkawa

リダイレクト

Ver 0.72からのリダイレクトですが、外部コマンドでのみ使えます。また書式がちょっとかわってます。まぁ1とか2よりはいいかも。

# 外部コマンドの標準出力をファイルへ
^hoge_cmd out> hoge_stdout.txt
# 外部コマンドの標準エラー出力をファイルへ
^hoge_cmd err> hoge_stdout.txt
# 外部コマンドの標準出力とエラー出力をファイルへ
^hoge_cmd out+err> hoge_stdout.txt

SQlite関連

以下の通り削除です。

Specifically, it removes the following 20 commands: and, as, collect, describe, field, fn, from table, group-by, into db, into nu, join, limit, open-db, or (for expressions), or (for queries), order-by, over, select, testing-db, where

理由は Proposal: Remove the sqlparser SQLite commands #7040 に記載されてます。
help commandsでのdatabaseカテゴリは、2つのみ(query, schma)しか残ってません。

他にもありますので、Breaking changesをみたほうがいいでしょう。

hkawahkawa

Nushellのいいところ:

  1. パイプに構造化データを流せること。
  2. pluginも作れる[1]
  3. SQLライクにデータの絞り込み・抽出ができること(コマンド毎にオプション覚える必要が少なくなる)
  4. Rustで書かれて高速・最新・優れたライブラリの恩恵を受けられる
  5. Apache Arrow[2]ベースのDataframe
  6. Starshipと連携した見栄えのするプロンプト
  7. Nushellの特徴が活かせるスクリプトが書ける
  8. ドキュメントが少ないが、理解できればカスタマイズ[3]しやすい
  9. Cross platform(Linux, macOS, BSD, and Windows)
  10. エラー情報が豊富
脚注
  1. Python,Rustで作れるらしい.どっちも苦手、Deno使えんかな... ↩︎

  2. 列データを処理するデータ分析アプリケーションを開発するための言語に依存しないソフトウェアフレームワークで、効率的なデータ交換のために設計されたデータフォーマット。約30倍高速化した適用事例を記載したブログSpeeding up PySpark with Apache Arrow参照 ↩︎

  3. Menu,keybindingなど ↩︎

hkawahkawa

https://github.com/nushell/nushell/releases/tag/0.73.0

  • 論理積(&&)/論理和(||)は、and/orに.
  • 新しいexploreコマンドの導入。
  • mathコマンドに新しい定数・関数の追加(ほぼ0.72で導入済みのものを含む)
  • any, all, skip until, skip while, take until, take whileで行の条件の代わりにクロージャを使えるようにした。
  • filter,uniq-byコマンドの導入
  • mutで定義された構造化データが格納された変数の内部データへの代入ができるように。
    下記のように簡潔に記述できるようになった。
$env.config.table.mode = compact_double

Full Changelog

hkawahkawa

Nushell 0.74 | Nushellがリリースされました。

  • create.ioから取得できるようになり、cargo install nuで導入できるようになった。
  • カスタムコマンドのヘルプ自動生成に加えて、alias, modulesにも適用。
  • constキーワードの追加,url encode,valuesコマンドの追加
  • その他もろもろ
hkawahkawa

Nu Shellの新バージョンリリース情報

https://www.nushell.sh/blog/2023-01-31-nushell_0_75.html

主要な変更:

Unicode

  • Unicodeエスケープの変更
"\u0043" --> "\u{0043}
  • str length コマンドに -gオプションの適用[^将来デフォルトにするか議論中]
    直感的な文字数と実数が合わない場合、とくにやemojiがある場合に有効.
$ 'ほげ ふが ぴよ'   | str length -g
7

$ 'ほげ ふが ぴよ'   | str length
20

新たなコマンド

  • enumerate
    入力データの列挙とindexの付与
ls | enumerate | get 14
  • Web関連コマンド名の変更
Old name New name beginning with 0.75
fetch http get
post http post
to url url build-query
  • main
    mainコマンドでコマンドを定義すると、モジュール名をコマンド名として扱える。

その他

  • saveコマンドに--progressオプションが追加されて、ターミナル上にプログレスバーを表示します。