# システム内の移動

初期のシェルを使うとシステム内を移動してコマンドを実行することができますが、Nuのような現代的なシェルでも同じことができます。システムを操作する際によく使われるコマンドをいくつか見てみましょう。

# ディレクトリの内容を確認する

> ls

他の章でみてきたように、lsはパスの内容を表示するためのコマンドです。Nuはパスの内容をテーブルとして返してくれます。

lsコマンドには表示する内容を変更するためにオプションで引数を渡すことができます。例えば".md"で終わるファイルの一覧を表示することができます。glob"*.md"はファイルが'.md'で終わっていればマッチすると読むことができます。

> ls *.md
───┬────────────────────┬──────┬─────────┬────────────
 # │ name               │ type │ size    │ modified 
───┼────────────────────┼──────┼─────────┼────────────
 0 │ CODE_OF_CONDUCT.md │ File │  3.4 KB │ 5 days ago 
 1 │ CONTRIBUTING.md    │ File │   886 B │ 5 days ago 
 2 │ README.md          │ File │ 15.0 KB │ 5 days ago 
 3 │ TODO.md            │ File │  1.6 KB │ 5 days ago 
───┴────────────────────┴──────┴─────────┴────────────

上記のオプション引数"*.txt"の中で利用されているアスタリスク(*)はしばしばワイルドカードやグロブと呼ばれ、何にでもマッチします。グロブ"*.txt"は"'.txt'で終わる任意のファイルにマッチする"と読むことができます。

Nuはより深いディレクトリにアクセスできる最新のグロブも利用します。

 ls **/*.md
────┬───────────────────────────────────────────┬──────┬─────────┬────────────
 #  │ name                                      │ type │ size    │ modified 
────┼───────────────────────────────────────────┼──────┼─────────┼────────────
  0 │ .github/ISSUE_TEMPLATE/bug_report.md      │ File │   592 B │ 5 days ago 
  1 │ .github/ISSUE_TEMPLATE/feature_request.md │ File │   595 B │ 5 days ago 
  2 │ CODE_OF_CONDUCT.md                        │ File │  3.4 KB │ 5 days ago 
  3 │ CONTRIBUTING.md                           │ File │   886 B │ 5 days ago 
  4 │ README.md                                 │ File │ 15.0 KB │ 5 days ago 
  5 │ TODO.md                                   │ File │  1.6 KB │ 5 days ago 
  6 │ crates/nu-source/README.md                │ File │  1.7 KB │ 5 days ago 
  7 │ docker/packaging/README.md                │ File │  1.5 KB │ 5 days ago 
  8 │ docs/commands/README.md                   │ File │   929 B │ 5 days ago 
  9 │ docs/commands/alias.md                    │ File │  1.7 KB │ 5 days ago 
 10 │ docs/commands/append.md                   │ File │  1.4 KB │ 5 days ago

ここでは".md"で終わるファイルを探していますが、2つのアスタリスクはさらに"ここから始まる任意のディレクトリにある"という意味です。

# 現在のディレクトリを変更する

> cd new_directory

現在のディレクトリを変更するにはcdコマンドを使います。他のシェルと同じように、ディレクトリの名前か上の階層に移動する場合は..ショートカットを利用します。

cdを省略してパスだけを指定することでも現在の作業ディレクトリを変更することができます。

> new_directory

# ファイルシステムのコマンド

Nuはクロスプラットフォームで動作するいくつかの基本的なファイルシステムのコマンドも提供します。

mvコマンドを利用すればアイテムをある場所から別の場所へ移動できます。

> mv item location

ある場所から別の場所へアイテムのコピーができます。

> cp item location

アイテムの削除ができます。

> rm item

3つのコマンドはlsコマンドでみたグロブ機能も利用できます。

最後に、mkdirコマンドで新しいディレクトリを作成できます。

> mkdir new_directory