-
Notifications
You must be signed in to change notification settings - Fork 1
/
README.ja
344 lines (271 loc) · 14.9 KB
/
README.ja
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
xyzsh シェルスクリプト言語
このソフトウェアはなんですか?
インタラクティブシェル。OSX, cygwin, Linux, FreeBSDで動きます。 ガベージコレクションがついていて、簡易なオブジェクト指向ができます。perlやrubyのようなテキスト処理を行なう内部コマンドを装備しています。全ての内部コマンドにはサンプル付きのヘルプがついてきます。補完は自身によって記述されていて、IDEのようにxyzshの文法に基づいて補完されます。migemoによる日本語ファイル名の補完もあります。
サンプル
> 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
> ls | scan . | while(| eval "|${I=1} 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
コンパイルとテストを行った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)
editline
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-editline-dir
/usrや/usr/localにeditlineがインストールされていない場合
editlineがインストールされているディレクトリを指定します。
--with-debug
デバッグモードのプログラムを作成。-gオプションをつけてgccを実行します。
gdbでデバッグができるようになります。またxyzsh自身のメモリーリーク検出機能を有効にします。
--with-gprof-debug
デバッグモードのプログラムを作成。-pgオプションをつけてgccを実行します。
gprofでプロファイルが可能になります。(関数ごとの実行速度の評価を行う)
--with-static
静的ライブラリを作成します。実行プログラムも静的にリンクされ動的ライブラリは必要なくなります。
通常では必要がないはずです。
日本人向けのオプション
--with-migemo
migemoオブジェクトを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などに書く)
プログラムが動的ライブラリをリンクして実行できるようになります。
(動的ライブラリのある場所が決まらないとxyzshは実行できない)
OSXでは
OSXではldconfigの設定は必要ありませんが、以下の設定が必要になります。
export DYLD_LIBRARY_PATH=/usr/local/lib
~/.bashrcに書いておいてください。(無くても実行できる場合もあるが、mfiler4でmigemoをロードするとこの設定が無いと僕の環境ではmfiler4が落ちる)
cygwinでは
cygwin x86_64 version 1.7.25では鬼車はソース(バージョン5.9.4)からコンパイルしてインストールしないとコンパイルが通りませんでした。あと僕のmigemoの使い方が悪いのかmigemoはロードするとコアを吐いて落ちます。
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.h --> xyzshヘッダーファイル。このファイルをインクルードして-lxyzshオプションをgccにつければ、xyzshを組み込んだプログラムも作成できます
xyzsh.xyzsh --> xyzshランタイムスクリプト
completion.xyzsh --> 補完関係のxyzshランタイムスクリプト
help.xyzsh --> xyzshのヘルプ用のスクリプト
src/xyzsh --> ヘッダーが含まれるディレクトリ
src/block.c --> コードを格納するblock_obj関連の実装
src/env.c --> 変数を展開して実行時の引数情報に展開するプログラム
src/cmd_ary.c --> 配列関連の内部コマンドが定義されている
src/cmd_loop.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/curses.c --> 端末制御関連の関数が実装されている
src/debug.c --> オリジナルのデバッグ用の関数が実装されている。メモリリークの検出など。
src/gc.c --> xyzshのオブジェクトのガベージコレクションの実装。
src/interface.c --> xyzshを組み込んだプログラムから呼び出されるインターフェース関数の実装。
src/kanji.c --> UTF-8やSJIS, EUCJPを扱うライブラリの実装。
src/main.c --> メイン関数が定義されている
src/object.c --> その他のオブジェクトの実装
src/parser.c --> パーサー本体
src/obj_list.c --> リストオブジェクト
src/obj_hash.c --> 連想配列オブジェクト
src/obj_string.c --> 文字列オブジェクト
src/obj_vector.c --> 動的配列オブジェクト
src/obj_nfun.c --> 内部関数オブジェクト
src/obj_fd.c --> ファイルディスクリプターオブジェクト
src/obj_extprog.c --> 外部プログラムオブジェクト
src/obj_completion.c --> 補完オブジェクト
src/obj_class.c --> クラスオブジェクト
src/obj_fun.c --> 関数オブジェクト
src/obj_user.c --> ユーザーオブジェクト
src/xyzsh.c --> xyzshのその他のルーチンを集めている
src/editline.c --> editlineを扱っているソース。
src/run.c --> xyzshのメインエンジン
src/stack.c --> xyzshのスタックを扱う実装。
src/editline/*.c --> editline C ソース
src/editline/*.h --> editline ヘッダー
src/load.c --> load関連
src/xfun.c --> カスタマイズされたCライブラリの関数
ラインセンス
MITラインセンスです。
このソフトウェアはeditline(libedit)のソースを含みます。