• R/O
  • HTTP
  • SSH
  • HTTPS

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

シェルスクリプト言語xyzshのソースコード。


File Info

Rev. e6937031845487331f4725d07d3efa18e748b1ad
크기 13,639 bytes
Time 2013-02-04 18:12:09
Author ab25cq
Log Message

1.3.4

Content


xyzsh シェルスクリプト言語

このソフトウェアはなんですか?

    Linux, OSX, cygwin, FreeBSDで動くインタラクティブシェルです。
    Perl/Rubyライクなテキスト処理コマンドを含み、オブジェクト指向も行えます。
    ガベージコレクションも装備しています。

    サンプル

    > 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
    
コンパイルとテストを行ったOS

    OSX 10.8.0
    FreeBSD 7.1-RELEASE-p16
    CentOS 5.8
    Oracle Solaris 11 Express
    Fedora18

作者について

    ab25(ab25cq@gmail.com)

注意

    このソフトウェアは自分の責任において実行してください。実行に被る結果について作者は責任を取れません。
    
インストール方法

    最初に以下のライブラリやソフトウェアをインストールしてください。
    パッケージは開発版(-devel. -devなど)があれば、そちらが必要となります。
    
    gcc 
    GNU make
    libc
    libm 
    ncurses(w)
    readline
    oniguruma
    iconv

    ncursesはncurseswでないと端末制御するときに日本語が扱えません。

    インストールしたら以下を実行してください
    
    ./configure --with-optimize
    make
    sudo make install

    または

    ./configure --with-optimize
    make
    su
    make install
    exit

    デフォルトでは/usr/local/bin以下にインストールされます。よってmake installには管理者権限が必要となります。

    もしインストールするディレクトリを変えたい場合は以下をタイプしてください。
    
    ./configure --prefix=??? --with-optimize
    make
    sudo make install

    もしデフォルトでインストールすれば、実行ファイルは/usr/local/bin, 設定ファイルは/usr/local/etc/xyzshにインストールされます。

    configure オプションは以下
    
    --prefix
        インストールするディレクトリを指定します。--prefix=$HOMEとすればホームディレクトリにインストールされます。
        この場合は管理者権限は必要ありません。
    --with-optimize
        コードの最適化を行うオプションです。実行速度の速いプログラムが作成されます。つけたほうが良いでしょう。
    --with-onig-dir
        /usrや/usr/localに鬼車がインストールされていない場合、鬼車がインストールされているディレクトリを指定します。]
        管理者権限がない場合にシステム管理者が鬼車をインストールしていない時、ホームディレクトリに鬼車を自分で
        コンパイルしてインストールして、ここで$HOMEを指定すれば管理者権限がなくてもxyzshをインストールできます。
    --with-readline-dir
        /usrや/usr/localにreadlineがインストールされていない場合
        readlineがインストールされているディレクトリを指定します。
    --with-debug
        デバッグモードのプログラムを作成。-gオプションをつけてgccを実行します。
        gdbでデバッグができるようになります。またxyzsh自身のメモリーリーク検出機能を有効にします。
    --with-gprof-debug
        デバッグモードのプログラムを作成。-pgオプションをつけてgccを実行します。
        gprofでプロファイルが可能になります。(関数ごとの実行速度の評価を行う)
    --with-static
        静的ライブラリを作成します。実行プログラムも静的にリンクされ動的ライブラリは必要なくなります。
        通常では必要がないはずです。
    
    日本人向けのオプション
    
    --with-migemo
        migemo::match内部コマンドをC拡張ライブラリとして作成します。
    --with-migemo-dir
        デフォルトでは/usr, /usr/localで検索されるmigemoのインストール先を指定します。
        これも管理者権限がない場合で自分のホームディレクトリにmigemoをインストールした場合には必要になるでしょう。
    --with-system-migemodir
        migemoの辞書がインストールされたディレクトリを指定します。
        通常ではFedoraでインストールされる/usr/share/migemoを想定しています。
        自分でmigemoをコンパイルした場合はここで/usr/local/share/migemoなどが必要になります。
    
    xyzshはライブラリを作成するのでライブラリが作成されたディレクトリ(通常は/usr/local/lib)を/etc/ld.so.confに追加して
    以下を実行しないといけません。/usr/local/libは標準ではライブラリの検索パスに加えてられないことが多く
    大抵の環境(Linux)ではこの作業が必要になります。
    
    sudo ldconfig
    
    もしくは

    su
    ldconfig
    exit
    

    もし管理者権限がない場合はこの作業を行えないので
    
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    
    などとライブラリがインストールされるディレクトリをLD_LIBRARY_PATHに追加してください。(.bashrcなどに書く)
    (OSXではDYLD_LIBRARY_PATH_FALLBAK)
    プログラムが動的ライブラリをリンクして実行できるようになります。
    (動的ライブラリのある場所が決まらないとxyzshは実行できない)

OSXでは

    OSXで標準でインストールされているreadlineはlibeditで、それはxyzshから使えません。GNU readlineが必要となります。
    Macportsなどのパッケージツールを使ってインストールするか自分でコンパイルしてGNU readlineをインストールする必要があります。

xyzshが使用するファイル

    /usr/local/bin/xyzsh --> プログラム本体
    /usr/local/share/doc/xyzsh/USAGE --> 使い方の英訳
    /usr/local/share/doc/xyzsh/USAGE.ja --> 使い方
    /usr/local/share/doc/xyzsh/README --> このファイルの英訳
    /usr/local/share/doc/xyzsh/README.ja --> このファイル
    /usr/local/share/doc/xyzsh/CHANGELOG --> 更新情報
    /usr/local/share/man/man1/xyzsh.1 --> マニュアルファイル
    /usr/local/etc/xyzsh/xyzsh.xyzsh --> 設定ファイル
    /usr/local/etc/xyzsh/completion.xyzsh --> 補完関係の設定ファイル
    /usr/local/etc/xyzsh/help.xyzsh --> ヘルプ関連の設定ファイル
    /usr/local/etc/xyzsh/read_history.xyzsh --> コマンドラインのヒストリを読み込む設定ファイル
    /usr/local/lib/xyzsh/*.so --> xyzshのC拡張ライブラリ
    ~/.xyzsh/xyzsh.xyzsh --> /usr/local/etc/xyzsh.xyzshの後に呼ばれるユーザーの設定ファイル
    ~/.xyzsh/history --> コマンドライン履歴が保存されたファイル
    ~/.xyzsh/macro --> コマンドラインでControl-xを押した場合に表示されるワンライナーの一覧。
                       ワンライナーの実行結果がコマンドラインに貼り付けられる。
                       このファイルにワンライナーを追加することでcntrol-xが押されたときに表示される一覧に
                       ワンライナーが追加される。
    ~/.xyzsh/jump --> jump内部コマンドを実行したときに表示されるジャンプ先のディレクトリ一覧
    ~/.xyzsh/menu --> menu内部コマンドを実行したときに表示されるワンライナーの一覧。
    ~/.xyzsh/program --> sys::を省略したい外部プログラムの一覧。このファイルに外部プログラム名を追加して
                         rehashコマンドを実行すれば、sys::を省略することができるようになる。
    ~/.xyzsh/lib/*.so --> ユーザーがインストールしたxyzshのC拡張ライブラリ
    
エンコードと改行コードについて

    xyzshスクリプトはUTF-8エンコードとLF改行コードを使って書かれなければなりません。
    xyzshが扱うエンコードや改行コードにはUTF-8,EUCJP, SJIS, ByteやLF,CR,CRLFが使えます。(オプションで指定する)。
    端末のエンコードはByteかUTF-8でなければ、なりません。
    
使い方

    > xyzsh

    とbashなどから実行すればインタラクティブシェルが起動します。
    
    > xyzsh -c "command"

    とすればコマンドが実行されます。
    
    > xyzsh ファイル
    
    とすればスクリプトファイルを実行できます。
    
配布されるアーカイブに含まれるファイル

    AUTHORS --> 著者情報
    CHANGELOG --> 更新履歴
    LINCENSE --> ラインセンス情報
    Makefile.in --> Makefileの元となるファイル。./configureで使われる
    README --> このファイルの英語版
    README.ja --> このファイル
    USAGE --> 使い方の英語版
    USAGE.ja --> 使い方
    config.h.in --> ./configureに使われるファイル。config.hの元となる
    configure --> インストール時に実行されるプログラム。OSの種別などを判別する。
    configure.in --> configureの元となったファイル。autoconfコマンドによってconifugreファイルに変換される
    install.sh --> configureプログラムに必要なファイル
    src/xyzsh/xyzsh.h --> xyzshヘッダーファイル。このファイルをインクルードして-lxyzshオプションをgccにつければ、xyzshを組み込んだプログラムも作成できます
    xyzsh.xyzsh --> xyzshランタイムスクリプト
    completion.xyzsh --> 補完関係のxyzshランタイムスクリプト
    help.xyzsh --> xyzshのヘルプ用のスクリプト
    src/xyzsh --> ヘッダーが含まれるディレクトリ
    src/block.c --> コードを格納するblock_obj関連の実装
    src/class.c --> classオブジェクトの実装。
    src/cmd_ary.c --> 配列関連の内部コマンドが定義されている
    src/cmd_base.c --> 基本となる内部コマンドが定義されている
    src/cmd_condition.c --> -ltなど条件判定を行う内部コマンドが実装されている
    src/cmd_curses.c --> pやselectorなど端末制御を行う内部コマンドが実装されている
    src/cmd_file.c --> ファイル操作を行う内部コマンドが実装されている
    src/cmd_num.c --> 四則演算を行う内部コマンドが実装されている
    src/cmd_obj.c --> オブジェクト指向を行う内部コマンドが実装されている。変数を扱う。
    src/cmd_str.c --> 文字列処理を行う内部コマンドが実装されている。
    src/completion.c --> completionオブジェクトの実装
    src/curses.c --> 端末制御関連の関数が実装されている
    src/debug.c --> オリジナルのデバッグ用の関数が実装されている。メモリリークの検出など。
    src/fun.c --> 関数オブジェクトの実装
    src/gc.c --> xyzshのオブジェクトのガベージコレクションの実装。
    src/hash.c --> 連想配列のライブラリの実装。
    src/interface.c --> xyzshを組み込んだプログラムから呼び出されるインターフェース関数の実装。
    src/kanji.c --> UTF-8やSJIS, EUCJPを扱うライブラリの実装。
    src/list.c --> リストのライブラリの実装。
    src/main.c --> メイン関数が定義されている
    src/object.c --> その他のオブジェクトの実装
    src/parser.c --> パーサー本体
    src/xyzsh.c --> xyzshのその他のルーチンを集めている
    src/readline.c --> readlineを扱っているソース。
    src/run.c --> xyzshのメインエンジン
    src/stack.c --> xyzshのスタックを扱う実装。
    src/string.c --> 文字列ライブラリ
    src/uobject --> ユーザーオブジェクトの定義
    src/vector.c --> 動的配列の実装
    src/nfun.c --> ネイティブ関数オブジェクトの実装
    src/fd.c --> ファイル記述子オブジェクトの実装
    src/extprog.c --> 外部プログラムオブジェクトの実装

ラインセンス

    MITラインセンスです。