Nushell移行ガイド

AI記事 このページでは、Bash、CMD、PowerShellなどの従来のシェルからNushellへの移行方法を詳しく解説します。 基本的な概念の違いからよく使うコマンドの対応表まで、実用的な移行ガイドをお届けします。

移行ガイド:他のシェルからNushellへ

Bashや他のシェルからNushellに移行する際の主なポイントを理解しましょう。 Nushellは従来のシェルとは大きく異なる設計思想を持っていますが、基本的な操作は直感的に理解できます。

Nushellの基本理念

  • 構造化データを中心とする設計 - テキストストリームではなく、構造化されたデータを操作
  • テーブル形式での出力 - ほとんどのコマンド結果がテーブル形式で返される
  • パイプラインでのデータ変換 - SQLのようなクエリ操作が可能
  • 型安全性 - データ型を認識し、適切な処理を自動的に行う
  • 組み込み関数の豊富さ - 外部コマンドに頼らずとも強力な処理が可能

BashからNushellへ

BashからNushellへの移行ガイド
操作 Bash Nushell
パスの設定 export PATH=$PATH:/new/path $env.PATH = ($env.PATH | append "/new/path")
エイリアス設定 alias ll='ls -la' alias ll = ls -la
環境変数設定 export EDITOR=vim $env.EDITOR = "vim"
コマンド置換 echo "Today is $(date)" echo $"Today is (date | str trim)"
ファイル読み込み source ~/.bashrc source ~/.config/nushell/config.nu
パイプライン ls -la | grep txt | sort ls | where name =~ "txt" | sort-by name
リダイレクト echo "text" > file.txt echo "text" | save file.txt
ループ for i in *; do echo $i; done ls | each { |it| echo $it.name }
ディレクトリ作成 mkdir -p new/dir mkdir new/dir
リスト操作 arr=(1 2 3); echo ${arr[1]} let arr = [1, 2, 3]; echo $arr.1

Bashスクリプトからの移行ポイント

  • Nushellでは変数はletキーワードで宣言し、$で参照する
  • 文字列補間は$"text with (variable)"形式を使用する
  • コマンド実行結果はパイプラインを通して変換可能なテーブルとして扱われる
  • ループはリストや列挙可能なデータに対してeachコマンドを使う
  • 外部コマンドを実行する場合は^またはrunを使用する

CMDからNushellへ

CMDからNushellへの移行ガイド
操作 CMD Nushell
ディレクトリ変更 cd C:\Users cd C:\Users
環境変数設定 SET TEMP=C:\TEMP $env.TEMP = "C:\TEMP"
エコー表示 ECHO %USERNAME% echo $env.USERNAME
バッチファイル実行 CALL script.bat ^script.bat (外部コマンド実行)
FOR ループ FOR %i IN (*.txt) DO ECHO %i ls *.txt | each { |it| echo $it.name }
ディレクトリ一覧 DIR ls
ファイル削除 DEL file.txt rm file.txt
コピー COPY source.txt dest.txt cp source.txt dest.txt
移動/名前変更 MOVE old.txt new.txt mv old.txt new.txt
コマンド実行 START notepad.exe ^notepad.exe

Windows固有の操作

Nushellは、Windowsで一般的なパス表記やPowerShellコマンドとの互換性を持っています。 例えば、Windowsのバックスラッシュパスも問題なく扱えます。

# Windowsパスの例
cd C:\Program Files
ls 
# または
ls 'C:\Program Files'

Nushellスクリプトの例

簡単なNushellスクリプトの例を示します。これは、ディレクトリ内の大きなファイルを探して表示するスクリプトです。

# large_files.nu - 大きなファイルを見つけるスクリプト
def find_large_files [
  path: path   # 検索するディレクトリパス
  size: int    # 最小サイズ(KB)
] {
  # パスが存在するか確認
  if not ($path | path exists) {
    echo $"パス ($path) が見つかりません"
    return
  }
  
  # ファイルを再帰的に検索し、サイズでフィルタリング
  ls -la $path --recursive 
  | where type == file 
  | where size > ($size * 1024)  # KB単位から変換
  | sort-by size
  | select name size modified
  | update size { |row| $row.size / 1024 / 1024 }  # MBに変換
}

# メイン処理
let search_path = if ($nu.args | length) > 0 { $nu.args.0 } else { "." }
let min_size = if ($nu.args | length) > 1 { $nu.args.1 | into int } else { 1024 }  # デフォルト1MB

echo $"($search_path) 内の ($min_size)KB より大きいファイルを検索中..."
find_large_files $search_path $min_size

実行方法

Nushellスクリプトは、Nushellを起動した状態で以下のように実行できます。

# スクリプトをソースとして実行
source large_files.nu
find_large_files . 1024

# または直接実行(スクリプトに実行権限がある場合)
nu large_files.nu . 1024

参考リソース

シェル環境の基本特徴 | シェルの機能比較詳細