Download List

Descripción del Proyecto

インタラクティブシェル。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.

サンプル(script samples)

> 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

System Requirements

System requirement is not defined

Publicado: 2013-04-01 20:03
xyzsh 1.4.2 (1 files Ocultar)

Release Notes

補完の確認をきちんとした。

split, joinを不可逆にした。他にも配列の扱いを感覚的に正しい動きにした。(split, join, linesなど)

::objなどオブジェクトの絶対パスを入れた。オブジェクトを外から属性を作れるようにした。

Changelog

2013 4月1日 1.4.2

1. migemo::querryのヘルプを書いた。

2. dl_openのアクセスフラグをX_OKからR_OKに直した。

3. グローバルオブジェクトをローカルオブジェクトが上書きする場合エラーを吐いていたが、それを無くした。
逆に色々問題が出ていた。自分の責任で書いてください。

> split -target "AAA BBB CCC" | var -local head ls tail; head; ls; tail
AAA
BBB
CCC

4. 変数の初期化の仕方に新しい機能を入れた。下のサンプルを見てください。

> print ${A=1}\n; ++ A; print $A\n
1
2

A is local variable.

This may be useful on loop like below.

> while(print ${I=0} | -lt 5) ( print HELLO\n; ++ I )
HELLO
HELLO
HELLO
HELLO
HELLO

5. 補完のバグを修正。

> /u[TAB]
usr/

> /u[TAB]
usr/

Xyzsh can't complete in this case

6. もう一つ補完のバグを修正。

> ls ~/.xyz[TAB]

> ls /Users/ab25cq/.xyz

7. expand_tildaという内部コマンドを追加。

> print /home/ab25cq/abc | expand_tilda | pomch
/home/ab25cq/abc

> print ~/abc | expand_tilda | pomch
/home/ab25cq/abc

> print ~root/abc | expand_tilda | pomch
/root/abc

8. 変数の補完のバグを修正。

> ls $HOME/[TAB]

> ls | var rl::abc rl::def

> echo "$rl::abc $rl::[TAB]"

9. クォートに関する補完のバグを修正。

> touch a\ a

> ls "a\ [TAB]

> ls 'a [TAB]

> ls a\ [TAB]

10. セグフォすることがあったメモリアロケーションに関するバグを修正。(fd_writec)

> pkill [TAB]
Segmentation Fault

11. オブジェクトの外から属性を追加できるように変更。

> object obj; split -target "AAA BBB CCC" | var obj::A obj::B obj::C

> print "$obj::A $obj::B $obj::C"
AAA BBB CCC

> obj::A
AAA

> obj::B
BBB

> obj::C
CCC

12. オブジェクトのプリフィックスの最初に::を使うとルートオブジェクトから辿れるようになってます。

> object obj; split -target "aaa bbb ccc" | var obj::a obj::b obj::c
> ::obj::a
aaa
> echo $::obj::a
aaa

13. lines, split, each, p , join,combineの動きが変わっています。最後の行に改行がある場合、無い場合の動きが変わっています。splitとjoinが不可逆になっています。

> print "a,b,c," | split ,
a
b
c

> print "a,b,c" | split ,
a
b
c
> print "a,b,c" | split , | join ,
a,b,c
> print "a,b,c,,," | split , | join ,
a,b,c,,,
> print a,b,c | split , | chomp | each ( | print ) | p
a
b
c[EOF]