インタラクティブシェル。OSX, cygwin, Linux, FreeBSDで動きます。 ガベージコレクションがついていて、簡易なオブジェクト指向ができます。perlやrubyのようなテキスト処理を行なう内部コマンドを装備しています。全ての内部コマンドにはサンプル付きのヘルプがついてきます。補完は自身によって記述されていて、IDEのようにxyzshの文法に基づいて補完されます。migemoによる日本語ファイル名の補完もあります。
An interactive shell script language on OSX, cygwin, Linux, FreeBSD. This features simple object oriented scripting with garbage collection, text processing like perl or ruby and containes manual for all inner commands with their samples. Offcourse you can type commands with completion which is based on xyzsh grammer like IDE and is defined by itself.
> ls -F docs/ main.c samples/ sub.c > ls | each ( | chomp | -d && | print ) docs samples > ls -F | grep -v / main.c sub.c > ls | each ( ! | chomp | -d && | print ) main.c sub.c > ls | each ( | printf "-+- %s -+-"\n ) | join " " -+- docs -+- -+- main -+- -+- samples -+- -+- sub.c -+- > ls | each ( | scan . | join " " ) d o c s m a i n . c s a m p l e s s u b . c > cat data Gorou Yamanaka Rei Tanaka Yumiko Shiratori > cat data | each ( | =~ Yamanaka && | print ) Gorou Yamanaka > cat data | lines 0 1 Gorou Yamanaka Rei Tanaka > cat data | each ( | split | lines 1 0 | join ) Yamanaka Gorou Tanaka Rei Shiratori Yumiko > vim student.xyzsh class Student ( | var first_name second_name age country def show ( var first_name second_name age country | printf "name: %s %s¥nage: %s¥ncountry: %s¥n" ) ) object student student::run ( print "Yamanaka Gorou 23 Japan" | split | Student ) > load student.xyzsh > student::show name: Yamanaka Gorou age: 23 country: Japan > print 1 | var -local i; ls | scan . | while(| eval "|$i print |>") (|> join ""; ++ i ) A UT HOR SCHA NGELO GLICEN SEMakef ileMakef ile.inREA DMEREADME. jaUSAGEUSAG E.jacompleti on.xyzshconfi g.hconfig.h.in config.logconfi g.statusconfigur econfigure.inhelp .xyzshinstall.shli bxyzsh.1.7.0.dylibl ibxyzsh.1.dyliblibxy zsh.dylibmanread_hist ory.xyzshsrcxyzshxyzsh .dSYMxyzsh.xyzsh > ls | lines 0 1 | scan . | each ( | chomp | x 5 | pomch ) AAAAA UUUUU TTTTT HHHHH OOOOO RRRRR SSSSS CCCCC HHHHH AAAAA NNNNN GGGGG EEEEE LLLLL OOOOO GGGGG
lines, rows, 配列の参照など範囲指定外の場合は何も出力しないようになりました。
times, substr, lstrip, rstrip, combine, substr_replaceコマンドの追加。
2013 3月9日 version 1.4.0
1. 配列とハッシュの参照の動きが変わっています。前はハッシュは存在しないキーでアクセスするとエラーを返してましたが
空の文字列の張り付けになっています。あと配列は存在しないインデックスでアクセスするとインデックスを修正して張り付けていましたが
同じく空の文字列の張り付けになっています。
> print 0\n1\n2 | ary A
> print $A[0]\n
0
> print $A[-1]\n
2
> print $A[3]\n
> print key1\nitem1 | hash A
> print $A[key2]\n
> print $A[key1]\n
item1
2. varの-indexオプション廃止
3. aryの-appendオプションが-insertに改名。-appendオプションが追加されました。(末尾に追記)
4. aryと-indexオプションのアルゴリズムが変わっています。範囲外のアクセスは空文字列+改行を返します。
5. hashと-appendオプションのアルゴリズムが変わっています。同名の変数があっても新しくハッシュを作成して上書きします。
6. hashと-keyオプションのアルゴリズムが変わっています。存在しないキーへのアクセスは空文字列+改行を返します。
7. readlineでの複数行の編集にバグがありました。修正しています。
8. verison 1.3.9で%q, %Qクォートが追加されています。USAGE.jaを見てください。
9. hashが空行の要素を受け取るようになりました。
10. aryと-append(-insert)オプションのアルゴリズムが変わっています。同名の変数があっても新しく配列を作成して上書きします。空文字列を入力に取った場合でも空文字列の要素を作ります。
11. linesとrowsで範囲外の数値を指定するとlinesは空行をrowsは何も出力しないようになりました。lines, rowsの範囲指定では両方が範囲外だと何も出力しないようになりました。
12. Arch Linuxでコンパイルと実行をチェックしています。
13. シングルクォートを含むファイル名の補完がおかしかった問題を修正
14. "times", "substr", "substr_replace, "lstrip", "rstrip", "combine" 内部コマンドが追加されました。