Nushell移行ガイド
AI記事 このページでは、Bash、CMD、PowerShellなどの従来のシェルからNushellへの移行方法を詳しく解説します。 基本的な概念の違いからよく使うコマンドの対応表まで、実用的な移行ガイドをお届けします。
移行ガイド:他のシェルからNushellへ
Bashや他のシェルからNushellに移行する際の主なポイントを理解しましょう。 Nushellは従来のシェルとは大きく異なる設計思想を持っていますが、基本的な操作は直感的に理解できます。
Nushellの基本理念
- 構造化データを中心とする設計 - テキストストリームではなく、構造化されたデータを操作
- テーブル形式での出力 - ほとんどのコマンド結果がテーブル形式で返される
- パイプラインでのデータ変換 - SQLのようなクエリ操作が可能
- 型安全性 - データ型を認識し、適切な処理を自動的に行う
- 組み込み関数の豊富さ - 外部コマンドに頼らずとも強力な処理が可能
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 |
---|---|---|
ディレクトリ変更 | 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