Nushell
Book
Cookbook
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
Book
Cookbook
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
  • はじめに
  • Getting Started
    • Nu のインストール
    • Default Shell
    • クイックツアー
    • システム内の移動
    • Thinking in Nu
    • Nushell Cheat Sheet
  • Nu 基礎編
    • データ型
    • データの読み込み
    • パイプライン
    • Working with Strings
    • Working with Lists
    • テーブルを扱う
  • Programming in Nu
    • Custom Commands
    • エイリアス
    • Operators
    • /book/variables_and_subexpressions.html
    • Scripts
    • Modules
    • Overlays
    • /book/command_signature.html
    • Testing your Nushell Code
    • Best Practices
  • シェルとしての Nu
    • 設定
    • 環境変数
    • Stdout, Stderr, and Exit Codes
    • エスケープ
    • How to Configure 3rd Party Prompts
    • シェルの中のシェル
    • Reedline, Nu's Line Editor
    • Externs
    • Custom Completions
    • Coloring and Theming in Nu
    • Hooks
    • Background Tasks with Nu
  • Nu への移行
    • Bash から来た人向け
    • Coming from CMD.EXE
    • 他のシェルと DSL から Nu への対応表
    • 命令形言語から Nu への対応表
    • 関数型言語から Nu への対応表
    • Nushell 演算子対応表
  • Design Notes
    • How Nushell Code Gets Run
  • (Not So) Advanced
    • Standard Library (Preview)
    • Dataframes
    • メタデータ
    • Creating Your Own Errors
    • Parallelism
    • プラグイン
    • explore

クイックツアー

Nu で何ができるかを知るための最も簡単な方法は、例をいくつか見ることです。では始めましょう。

ls などのコマンドを実行してまず気づくことは、テキストブロックの代わりに構造化されたテーブルが返ってくることです。

> ls
╭────┬───────────────────────┬──────┬───────────┬─────────────╮
│ #  │         name          │ type │   size    │  modified   │
├────┼───────────────────────┼──────┼───────────┼─────────────┤
│  0 │ 404.html              │ file │     429 B │ 3 days ago  │
│  1 │ CONTRIBUTING.md       │ file │     955 B │ 8 mins ago  │
│  2 │ Gemfile               │ file │   1.1 KiB │ 3 days ago  │
│  3 │ Gemfile.lock          │ file │   6.9 KiB │ 3 days ago  │
│  4 │ LICENSE               │ file │   1.1 KiB │ 3 days ago  │
│  5 │ README.md             │ file │     213 B │ 3 days ago  │
...

このテーブルは、ただ別の形でディレクトリを表示しているだけではありません。スプレッドシートのように、このテーブルではデータをより対話的に扱うことができます。

はじめに、テーブルをサイズでソートしてみましょう。 ls の出力を取得し、カラムの値に基づいてテーブルをソートするコマンドに渡してみます。

> ls | sort-by size | reverse
╭────┬───────────────────────┬──────┬───────────┬─────────────╮
│ #  │         name          │ type │   size    │  modified   │
├────┼───────────────────────┼──────┼───────────┼─────────────┤
│  0 │ Gemfile.lock          │ file │   6.9 KiB │ 3 days ago  │
│  1 │ SUMMARY.md            │ file │   3.7 KiB │ 3 days ago  │
│  2 │ Gemfile               │ file │   1.1 KiB │ 3 days ago  │
│  3 │ LICENSE               │ file │   1.1 KiB │ 3 days ago  │
│  4 │ CONTRIBUTING.md       │ file │     955 B │ 9 mins ago  │
│  5 │ books.md              │ file │     687 B │ 3 days ago  │
...

これをするのに、 ls にコマンドライン引数を渡してはいないことが確認できます。代わりに、 Nu が ls コマンドの出力をソートするために提供している sort-by コマンドを使用しています。また、最も大きいファイルが一番上に来るように、 reverse も使用しています。

Nu はテーブルを操作するコマンドを多数提供しています。例えば、 where を使用して ls テーブルのコンテンツをフィルターすることができるので、1キロバイトを超えるファイルのみを表示することができます。

> ls | where size > 1kb
╭───┬───────────────────┬──────┬─────────┬────────────╮
│ # │       name        │ type │  size   │  modified  │
├───┼───────────────────┼──────┼─────────┼────────────┤
│ 0 │ Gemfile           │ file │ 1.1 KiB │ 3 days ago │
│ 1 │ Gemfile.lock      │ file │ 6.9 KiB │ 3 days ago │
│ 2 │ LICENSE           │ file │ 1.1 KiB │ 3 days ago │
│ 3 │ SUMMARY.md        │ file │ 3.7 KiB │ 3 days ago │
╰───┴───────────────────┴──────┴─────────┴────────────╯

Unix の哲学と同様、互いに対話可能なコマンドにより、さまざまな異なる組み合わせの使用が可能になります。では、別のコマンドを見てみましょう。

> ps
╭─────┬───────┬───────┬──────────────────────────────────────────────┬─────────┬───────┬──────────┬──────────╮
│   # │  pid  │ ppid  │                     name                     │ status  │  cpu  │   mem    │ virtual  │
├─────┼───────┼───────┼──────────────────────────────────────────────┼─────────┼───────┼──────────┼──────────┤
│   0 │ 87194 │     1 │ mdworker_shared                              │ Sleep   │  0.00 │  25.9 MB │ 418.0 GB │
│   1 │ 87183 │  2314 │ Arc Helper (Renderer)                        │ Sleep   │  0.00 │  59.9 MB │   1.6 TB │
│   2 │ 87182 │  2314 │ Arc Helper (Renderer)                        │ Sleep   │  0.23 │ 224.3 MB │   1.6 TB │
│   3 │ 87156 │ 87105 │ Code Helper (Plugin)                         │ Sleep   │  0.00 │  56.0 MB │ 457.4 GB │
...

もし Linux を使用したことがあるなら、 ps コマンドは馴染みがあるでしょう。これを使用して、システム上で現在実行されている全てのプロセスのリストと、それらのステータス、名前を取得することができます。プロセスのCPU使用率を見ることもできます。

いま表示したいのは、CPUをたくさん使用しているプロセスですか? ls コマンドで以前したのと同じように、 ps コマンドが返したテーブルに対しても操作することができます。

> ps | where cpu > 5
╭───┬───────┬───────┬─────────────────────────────────────────┬─────────┬───────┬──────────┬──────────╮
│ # │  pid  │ ppid  │                  name                   │ status  │  cpu  │   mem    │ virtual  │
├───┼───────┼───────┼─────────────────────────────────────────┼─────────┼───────┼──────────┼──────────┤
│ 0 │ 86759 │ 86275 │ nu                                      │ Running │  6.27 │  38.7 MB │ 419.7 GB │
│ 1 │ 89134 │     1 │ com.apple.Virtualization.VirtualMachine │ Running │ 23.92 │   1.5 GB │ 427.3 GB │
│ 2 │ 70414 │     1 │ VTDecoderXPCService                     │ Sleep   │ 19.04 │  17.5 MB │ 419.7 GB │
│ 3 │  2334 │     1 │ TrackpadExtension                       │ Sleep   │  7.47 │  25.3 MB │ 418.8 GB │
│ 4 │  1205 │     1 │ iTerm2                                  │ Sleep   │ 11.92 │ 657.2 MB │ 421.7 GB │
╰───┴───────┴───────┴─────────────────────────────────────────┴─────────┴───────┴──────────┴──────────╯

いま、ls と ps を使用してファイルとプロセスのリストを表示しました。Nu はほかにも有用な情報をもつテーブルを作成するコマンドを提供しています。次は、 date と sys について見てみましょう。

date now を実行すると、現在の日時に関する情報が得られます。

> date now
2022-03-07 14:14:51.684619600 -08:00

テーブルとして取得したい場合は、これを date to-table に渡します。

> date now | date to-table
╭───┬──────┬───────┬─────┬──────┬────────┬────────┬──────────╮
│ # │ year │ month │ day │ hour │ minute │ second │ timezone │
├───┼──────┼───────┼─────┼──────┼────────┼────────┼──────────┤
│ 0 │ 2022 │     3 │   7 │   14 │     45 │      3 │ -08:00   │
╰───┴──────┴───────┴─────┴──────┴────────┴────────┴──────────╯

sys を実行すると、 Nu が実行されているシステムに関する情報が得られます。

> 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 する必要があります。

> 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]          │
╰────────────────┴────────────────────────╯

get コマンドを使用すると、テーブルのカラムの内容にジャンプすることができます。この例では、 Nu が実行されているホストに関する情報が含まれる "host" カラムを見ています。OSの名前、ホスト名、CPUなどです。では、システム上に存在するユーザーの名前を取得してみましょう。

> sys | get host.sessions.name
╭───┬──────────╮
│ 0 │ sophiajt │
╰───┴──────────╯

いま、システムには "sophiajt" という名前のユーザー一人だけがいます。ここで、ただのカラム名ではなく、カラムのパス( host.sessions.name の部分)を渡していることに気づくでしょう。Nu はカラムのパスを受け取って、テーブル中の対応する部分に移動します。

もう一つ違いがあることに気づいたかもしれません。データのテーブルではなく、文字列 "sophiajt" という、ただ一つの要素を受け取っています。Nu はデータのテーブルでも、文字列でも動作します。文字列は Nu の外部コマンドで作業する際の重要な役割を担います。

実際に Nu の外部での文字列の働きを見てみましょう。先程の例にならい、echo コマンド( ^ は Nu に、ビルトインの echo コマンドを使用しないことを伝えます)を実行してみます

> sys | get host.sessions.name | each { |elt| ^echo $elt }
sophiajt

これが前に試したものとよく似ているように見えるなら鋭いです!これは似ていますが、一つ重要な違いがあります。先程の値で ^echo を呼び出しました。これで、データをNu から echo (あるいは git のような、あらゆる Nu の外部のコマンド)に渡すことができるのです。

ヘルプの取得

Nu のビルトインコマンド全てのヘルプテキストは、 help で見つけることができます。すべてのコマンドを見たい場合は、 help commands を実行してください。また、 help -f <topic> を実行すれば、あるトピックについて検索することもできます。

> help path
Explore and manipulate paths.

There are three ways to represent a path:

* As a path literal, e.g., '/home/viking/spam.txt'
* As a structured path: a table with 'parent', 'stem', and 'extension' (and
* 'prefix' on Windows) columns. This format is produced by the 'path parse'
  subcommand.
* As an inner list of path parts, e.g., '[[ / home viking spam.txt ]]'.
  Splitting into parts is done by the `path split` command.

All subcommands accept all three variants as an input. Furthermore, the 'path
join' subcommand can be used to join the structured path or path parts back into
the path literal.

Usage:
  > path

Subcommands:
  path basename - Get the final component of a path
  path dirname - Get the parent directory of a path
  path exists - Check whether a path exists
  path expand - Try to expand a path to its absolute form
  path join - Join a structured path or a list of path parts.
  path parse - Convert a path into structured data.
  path relative-to - Get a path as relative to another path.
  path split - Split a path into parts by a separator.
  path type - Get the type of the object a path refers to (e.g., file, dir, symlink)

Flags:
  -h, --help
      Display this help message
GitHubでこのページを編集する
Contributors: tomoda, Sophia June Turner
Prev
Default Shell
Next
システム内の移動