mfiler2 shell manual

## パイプ

| | 標準出力を次のプログラムの標準入力として渡す
--- | ---

## リダイレクション

> file | fileに標準出力を保存
--- | ---
>> file | fileに出力を保存（追記)
1> file | fileに標準出力を保存
2> file | fileに標準エラー出力を保存
1>> file | fileに標準出力を保存 (追記)
2>> file | fileに標準エラー出力を保存 (追記)
< file | fileの内容を標準入力としてプログラムに渡す

## ワイルドカード(グロブ)

RubyのDir::globに準拠。
*
空文字列を含む任意の文字列と一致します。
?
任意の一文字と一致します。
[ ]
[]内のいずれかの文字と一致します。A-Zのように指定すると範囲を表します。[] が ^の場合、そこに含まれない文字と一致します。
{ }
{}内で,で区切られた文字列の組合せに展開します。例えばfoo{a,b,c}はfooa, foob, foocに展開されます。他のワイルドカードと異なり、展開結果のファイルが存在している必要はありません。
**/
ディレクトリを再帰的に辿りマッチを行います。例えば、foo/**/ はfoo/bar/、foo/bar/hogeなど、配下の全サブディレクトリとマッチします。
*/*
ディレクトリのある階層のファイルにマッチします。例えば*/*/*.cはディレクトリを３つ辿ったところにある.cファイルをすべて表示します。

## ジョブコントロール

& | プログラムをバックグランドジョブとして起動。バックグランドジョブを前面に出すには対応するジョブ番号の数字キーを押せば前面にでる(デフォルト)。既にフォワグランドジョブとして起動したプログラムをバックグランドジョブにするにはCTRL-Zを押す。ただしプログラム側が対応していないといけない。エディッタなどは対応しています。
--- | ---
; | ;を区切りとして複数のプログラムを順番に起動する。

## コマンド置き換え

`コマンド`か$(コマンド)を実行するとコマンドの実行結果が張り付けられてコマンドが実行されます。
例)
現在のディレクトリが/home/daisukeで
find `pwd` -name *
pwdの実行結果が張り付けられて
find /home/daisuke -name *
が実行されます。

## 普通のシェルにあってmfiler2のシェルにない機能

シェル変数の設定 -- :でシェルを起動するか%Sで外部シェルにコマンドを渡す
環境変数の設定 -- HのrubyコマンドラインかMeta+xでENV['aaa']="aaa"でいけます
制御構造文(if, for) -- Meta+xでRubyか%Sで外部シェルに渡すか:でシェルを起動して実行してください
高度なパイプ、リダイレクション -- Meta+xか%S
内部コマンド(cd, jobsなど) -- 必要ない
と上記で対応してください。暇があれば上記の機能も実装していきます。