mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Rename *.jp to *.ja, since jp is a region code and ja is a language
code. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5a5175ca98
commit
f943351e1f
19 changed files with 15 additions and 2643 deletions
51
COPYING.jp
51
COPYING.jp
|
@ -1,51 +0,0 @@
|
|||
$BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!%(BGPL(the GNU General
|
||||
Public License)$B$^$?$O0J2<$K<($9>r7o$GK\%W%m%0%i%`$r:FG[I[$G(B
|
||||
$B$-$^$9!%(BGPL$B$K$D$$$F$O(BGPL$B%U%!%$%k$r;2>H$7$F2<$5$$!%(B
|
||||
|
||||
1. $BJ#@=$O@)8B$J$/<+M3$G$9!%(B
|
||||
|
||||
2. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$N%=!<%9$r(B
|
||||
$B<+M3$KJQ99$G$-$^$9!%(B
|
||||
|
||||
(a) $B%M%C%H%K%e!<%:$K%]%9%H$7$?$j!$:n<T$KJQ99$rAwIU$9$k(B
|
||||
$B$J$I$NJ}K!$G!$JQ99$r8x3+$9$k!%(B
|
||||
|
||||
(b) $BJQ99$7$?K\%W%m%0%i%`$r<+J,$N=jB0$9$kAH?%FbIt$@$1$G(B
|
||||
$B;H$&!%(B
|
||||
|
||||
(c) $BJQ99E@$rL@<($7$?$&$(!$%=%U%H%&%'%"$NL>A0$rJQ99$9$k!%(B
|
||||
$B$=$N%=%U%H%&%'%"$rG[I[$9$k;~$K$OJQ99A0$NK\%W%m%0%i(B
|
||||
$B%`$bF1;~$KG[I[$9$k!%$^$?$OJQ99A0$NK\%W%m%0%i%`$N%=!<(B
|
||||
$B%9$NF~<jK!$rL@<($9$k!%(B
|
||||
|
||||
(d) $B$=$NB>$NJQ99>r7o$r:n<T$H9g0U$9$k!%(B
|
||||
|
||||
3. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$r%3%s%Q%$(B
|
||||
$B%k$7$?%*%V%8%'%/%H%3!<%I$d<B9T7A<0$G$bG[I[$G$-$^$9!%(B
|
||||
|
||||
(a) $B%P%$%J%j$r<u$1<h$C$??M$,%=!<%9$rF~<j$G$-$k$h$&$K!$(B
|
||||
$B%=!<%9$NF~<jK!$rL@<($9$k!%(B
|
||||
|
||||
(b) $B5!3#2DFI$J%=!<%9%3!<%I$rE:IU$9$k!%(B
|
||||
|
||||
(c) $BJQ99$r9T$C$?%P%$%J%j$OL>A0$rJQ99$7$?$&$(!$%*%j%8%J(B
|
||||
$B%k$N%=!<%9%3!<%I$NF~<jK!$rL@<($9$k!%(B
|
||||
|
||||
(d) $B$=$NB>$NG[I[>r7o$r:n<T$H9g0U$9$k!%(B
|
||||
|
||||
4. $BB>$N%W%m%0%i%`$X$N0zMQ$O$$$+$J$kL\E*$G$"$l<+M3$G$9!%$?(B
|
||||
$B$@$7!$K\%W%m%0%i%`$K4^$^$l$kB>$N:n<T$K$h$k%3!<%I$O!$$=(B
|
||||
$B$l$>$l$N:n<T$N0U8~$K$h$k@)8B$,2C$($i$l$k>l9g$,$"$j$^$9!%(B
|
||||
|
||||
$B$=$l$i%U%!%$%k$N0lMw$H$=$l$>$l$NG[I[>r7o$J$I$KIU$$$F$O(B
|
||||
LEGAL$B%U%!%$%k$r;2>H$7$F$/$@$5$$!%(B
|
||||
|
||||
5. $BK\%W%m%0%i%`$X$NF~NO$H$J$k%9%/%j%W%H$*$h$S!$K\%W%m%0%i(B
|
||||
$B%`$+$i$N=PNO$N8"Mx$OK\%W%m%0%i%`$N:n<T$G$O$J$/!$$=$l$>(B
|
||||
$B$l$NF~=PNO$r@8@.$7$??M$KB0$7$^$9!%$^$?!$K\%W%m%0%i%`$K(B
|
||||
$BAH$_9~$^$l$k$?$a$N3HD%%i%$%V%i%j$K$D$$$F$bF1MM$G$9!%(B
|
||||
|
||||
6. $BK\%W%m%0%i%`$OL5J]>Z$G$9!%:n<T$OK\%W%m%0%i%`$r%5%]!<%H(B
|
||||
$B$9$k0U;V$O$"$j$^$9$,!$%W%m%0%i%`<+?H$N%P%0$"$k$$$OK\%W(B
|
||||
$B%m%0%i%`$N<B9T$J$I$+$iH/@8$9$k$$$+$J$kB;32$KBP$7$F$b@U(B
|
||||
$BG$$r;}$A$^$;$s!%(B
|
14
MANIFEST
14
MANIFEST
|
@ -1,5 +1,5 @@
|
|||
COPYING
|
||||
COPYING.jp
|
||||
COPYING.ja
|
||||
ChangeLog
|
||||
GPL
|
||||
LEGAL
|
||||
|
@ -7,9 +7,9 @@ LGPL
|
|||
MANIFEST
|
||||
Makefile.in
|
||||
README
|
||||
README.jp
|
||||
README.ja
|
||||
README.EXT
|
||||
README.EXT.jp
|
||||
README.EXT.ja
|
||||
ToDo
|
||||
array.c
|
||||
bignum.c
|
||||
|
@ -82,15 +82,15 @@ djgpp/mkver.sed
|
|||
cygwin/GNUmakefile.in
|
||||
doc/NEWS
|
||||
doc/forwardable.rd
|
||||
doc/forwardable.rd.jp
|
||||
doc/irb/irb-tools.rd.jp
|
||||
doc/forwardable.rd.ja
|
||||
doc/irb/irb-tools.rd.ja
|
||||
doc/irb/irb.rd
|
||||
doc/irb/irb.rd.jp
|
||||
doc/irb/irb.rd.ja
|
||||
doc/net/http.rd.ja
|
||||
doc/net/pop.rd.ja
|
||||
doc/net/smtp.rd.ja
|
||||
doc/shell.rd
|
||||
doc/shell.rd.jp
|
||||
doc/shell.rd.ja
|
||||
ext/Setup
|
||||
ext/Setup.dj
|
||||
ext/Setup.emx
|
||||
|
|
1187
README.EXT.jp
1187
README.EXT.jp
File diff suppressed because it is too large
Load diff
153
README.jp
153
README.jp
|
@ -1,153 +0,0 @@
|
|||
* Rubyとは
|
||||
|
||||
Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です.
|
||||
Rubyは最初から純粋なオブジェクト指向言語として設計されていま
|
||||
すから,オブジェクト指向プログラミングを手軽に行う事が出来ま
|
||||
す.もちろん通常の手続き型のプログラミングも可能です.
|
||||
|
||||
Rubyはテキスト処理関係の能力などに優れ,Perlと同じくらい強力
|
||||
です.さらにシンプルな文法と,例外処理やイテレータなどの機構
|
||||
によって,より分かりやすいプログラミングが出来ます.
|
||||
|
||||
|
||||
* Rubyの特長
|
||||
|
||||
+ シンプルな文法
|
||||
+ 普通のオブジェクト指向機能(クラス,メソッドコールなど)
|
||||
+ 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
|
||||
+ 演算子オーバーロード
|
||||
+ 例外処理機能
|
||||
+ イテレータとクロージャ
|
||||
+ ガーベージコレクタ
|
||||
+ ダイナミックローディング (アーキテクチャによる)
|
||||
+ 移植性が高い.多くのUNIX上で動くだけでなく,DOSやWindows,
|
||||
Mac,BeOSなどの上でも動く
|
||||
|
||||
|
||||
* 入手法
|
||||
|
||||
** ftpで
|
||||
|
||||
以下の場所においてあります.
|
||||
|
||||
ftp://ftp.ruby-lang.org/pub/ruby/
|
||||
|
||||
** CVSで
|
||||
|
||||
$ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src login
|
||||
(Logging in to anonymous@cvs.ruby-lang.org)
|
||||
CVS password: anonymous
|
||||
$ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:src checkout ruby
|
||||
|
||||
|
||||
* ホームページ
|
||||
|
||||
RubyのホームページのURLは
|
||||
|
||||
http://www.ruby-lang.org/
|
||||
|
||||
です.
|
||||
|
||||
|
||||
* メーリングリスト
|
||||
|
||||
Rubyのメーリングリストがあります。参加希望の方は
|
||||
|
||||
ruby-list-ctl@ruby-lang.org
|
||||
|
||||
まで本文に
|
||||
|
||||
subscribe YourFirstName YourFamilyName
|
||||
|
||||
と書いて送って下さい。
|
||||
|
||||
Ruby開発者向けメーリングリストもあります。こちらではrubyのバ
|
||||
グ、将来の仕様拡張など実装上の問題について議論されています。
|
||||
参加希望の方は
|
||||
|
||||
ruby-dev-ctl@ruby-lang.org
|
||||
|
||||
までruby-listと同様の方法でメールしてください。
|
||||
|
||||
Ruby拡張モジュールについて話し合うruby-extメーリングリストと
|
||||
数学関係の話題について話し合うruby-mathメーリングリストと
|
||||
英語で話し合うruby-talkメーリングリストもあります。参加方法
|
||||
はどれも同じです。
|
||||
|
||||
|
||||
* コンパイル・インストール
|
||||
|
||||
以下の手順で行ってください.
|
||||
|
||||
1. もしconfigureファイルが見つからない、もしくは
|
||||
configure.inより古いようなら、autoconfを実行して
|
||||
新しくconfigureを生成する
|
||||
|
||||
2. configureを実行してMakefileなどを生成する
|
||||
|
||||
3. (必要ならば)defines.hを編集する
|
||||
|
||||
多分,必要無いと思います.
|
||||
|
||||
4. (必要ならば)ext/Setupに静的にリンクする拡張モジュールを
|
||||
指定する
|
||||
|
||||
ext/Setupに記述したモジュールは静的にリンクされます.
|
||||
|
||||
ダイナミックローディングをサポートしていないアーキテク
|
||||
チャではSetupの1行目の「option nodynamic」という行のコ
|
||||
メントを外す必要があります.また,このアーキテクチャで
|
||||
拡張モジュールを利用するためには,あらかじめ静的にリン
|
||||
クしておく必要があります.
|
||||
|
||||
5. makeを実行してコンパイルする
|
||||
|
||||
6. make testでテストを行う.
|
||||
|
||||
「test succeeded」と表示されれば成功です.ただしテスト
|
||||
に成功しても完璧だと保証されている訳ではありません.
|
||||
|
||||
7. make install
|
||||
|
||||
rootで作業する必要があるかもしれません.
|
||||
|
||||
もし,コンパイル時にエラーが発生した場合にはエラーのログとマ
|
||||
シン,OSの種類を含むできるだけ詳しいレポートを作者に送ってく
|
||||
ださると他の方のためにもなります.
|
||||
|
||||
|
||||
* 移植
|
||||
|
||||
UNIXであればconfigureがほとんどの差異を吸収してくれるはずで
|
||||
すが,思わぬ見落としがあった場合(あるに違いない),作者にその
|
||||
ことをレポートすれば,解決できるかも知れません.
|
||||
|
||||
アーキテクチャにもっとも依存するのはGC部です.RubyのGCは対象
|
||||
のアーキテクチャがsetjmp()によって全てのレジスタを jmp_bufに
|
||||
格納することと,jmp_bufとスタックが32bitアラインメントされて
|
||||
いることを仮定しています.特に前者が成立しない場合の対応は非
|
||||
常に困難でしょう.後者の解決は比較的簡単で,gc.cでスタックを
|
||||
マークしている部分にアラインメントのバイト数だけずらしてマー
|
||||
クするコードを追加するだけで済みます.「defined(THINK_C)」で
|
||||
括られている部分を参考にしてください
|
||||
|
||||
# 実際にはRubyはThink Cではコンパイルできません.
|
||||
|
||||
レジスタウィンドウを持つCPUでは,レジスタウィンドウをスタッ
|
||||
クにフラッシュするアセンブラコードを追加する必要があるかも知
|
||||
れません.
|
||||
|
||||
|
||||
* 配布条件
|
||||
|
||||
COPYING.jpファイルを参照してください。
|
||||
|
||||
|
||||
* 著者
|
||||
|
||||
コメント,バグレポートその他は matz@zetabits.com まで.
|
||||
-------------------------------------------------------
|
||||
created at: Thu Aug 3 11:57:36 JST 1995
|
||||
Local variables:
|
||||
mode: indented-text
|
||||
end:
|
|
@ -1,81 +0,0 @@
|
|||
-- forwatable.rb
|
||||
$Release Version: 1.1 $
|
||||
$Revision$
|
||||
$Date$
|
||||
|
||||
=begin
|
||||
= Forwardable
|
||||
|
||||
クラスに対しメソッドの委譲機能を定義します.
|
||||
|
||||
== 使い方
|
||||
|
||||
クラスに対してextendして使います.
|
||||
|
||||
class Foo
|
||||
extend Forwardable
|
||||
|
||||
def_delegators("@out", "printf", "print")
|
||||
def_delegators(:@in, :gets)
|
||||
def_delegator(:@contents, :[], "content_at")
|
||||
end
|
||||
f = Foo.new
|
||||
f.printf ...
|
||||
f.gets
|
||||
f.content_at(1)
|
||||
|
||||
== メソッド
|
||||
|
||||
--- Forwardable#def_instance_delegators(accessor, *methods)
|
||||
|
||||
((|methods|))で渡されたメソッドのリストを((|accessorに|))委譲する
|
||||
ようにします.
|
||||
|
||||
--- Forwardable#def_instance_delegator(accessor, method, ali = method)
|
||||
|
||||
((||method|))で渡されたメソッドを((|accessor|))に委譲するようにし
|
||||
ます. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ば
|
||||
れたときには, ((|accessor|))に対し((|method|))を呼び出します.
|
||||
|
||||
--- Forwardable#def_delegators(accessor, *methods)
|
||||
|
||||
((|Forwardable#def_instance_delegators|))の別名です.
|
||||
|
||||
--- Forwardable#def_delegator(accessor, method, ali = method)
|
||||
|
||||
((|Forwardable#def_instance_delegator|))の別名です.
|
||||
|
||||
= SingleForwardable
|
||||
|
||||
オブジェクトに対し, メソッドの委譲機能を定義します.
|
||||
|
||||
== 使い方
|
||||
|
||||
オブジェクトに対して((|extend|))して使います.
|
||||
|
||||
g = Goo.new
|
||||
g.extend SingleForwardable
|
||||
g.def_delegator("@out", :puts)
|
||||
g.puts ...
|
||||
|
||||
== メソッド
|
||||
|
||||
--- SingleForwardable#def_singleton_delegators(accessor, *methods)
|
||||
|
||||
((|methods|))で渡されたメソッドのリストを((|accessor|))に委譲する
|
||||
ようにします.
|
||||
|
||||
--- SingleForwardable#def_singleton_delegator(accessor, method, ali = method)
|
||||
|
||||
((|method|))で渡されたメソッドを((|accessor|))に委譲するようにしま
|
||||
す. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ばれ
|
||||
たときには, ((|accessor|))に対し((|method|))を呼び出します.
|
||||
|
||||
--- SingleForwardable#def_delegators(accessor, *methods)
|
||||
|
||||
((|SingleForwardable#def_singleton_delegators|))の別名です.
|
||||
|
||||
--- SingleForwardable#def_delegator(accessor, method, ali = method)
|
||||
|
||||
((|SingleForwardable#def_singleton_delegator|))の別名です.
|
||||
=end
|
|
@ -1,185 +0,0 @@
|
|||
irb関連おまけコマンドとライブラリ
|
||||
$Release Version: 0.7.1 $
|
||||
$Revision$
|
||||
$Date$
|
||||
by Keiju ISHITSUKA(Nihon Rational Co.,Ltd.)
|
||||
|
||||
=begin
|
||||
|
||||
:コマンド:
|
||||
* rtags -- ruby tags command
|
||||
|
||||
:関数ライブラリ:
|
||||
* xmp -- irb version of gotoken xmp-function
|
||||
|
||||
:クラスライブラリ:
|
||||
* frame.rb -- frame tracer
|
||||
* completion.rb -- irb completor
|
||||
|
||||
= rtags
|
||||
|
||||
rtagsはemacs及びvi用の, TAGファイルをつくるコマンドです.
|
||||
|
||||
== 使い方
|
||||
|
||||
rtags [-vi] file....
|
||||
|
||||
カレントディレクトリにemacs用のTAGSファイルができます. -viオプションを
|
||||
つけた時にはvi用のtagsファイルを作成します.
|
||||
|
||||
emacsの場合, 通常のetags.elがそのまま使えます. 検索可能なのは,
|
||||
|
||||
* クラス
|
||||
* メソッド
|
||||
* 特異メソッド
|
||||
* alias
|
||||
* attrで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
|
||||
* attr_XXXで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
|
||||
|
||||
です.
|
||||
|
||||
Cなどで使っているのと違うのは, コンプリーションに関する部分で,
|
||||
|
||||
関数名は,
|
||||
|
||||
関数名(
|
||||
|
||||
クラスは,
|
||||
|
||||
::クラス名::....::クラス名
|
||||
|
||||
メソッドは,
|
||||
|
||||
::クラス名::....::クラス名#メソッド名
|
||||
|
||||
特異メソッド(クラスメソッド)は
|
||||
|
||||
::クラス名::....::クラス名.メソッド名
|
||||
|
||||
でコンプリーションを行なうところです.
|
||||
|
||||
= xmp.rb
|
||||
|
||||
ごとけんxmpの上位互換バージョンです. ただ, 非常に重いのでごとけんxmpで
|
||||
は対応できない時に, 使用すると良いでしょう.
|
||||
|
||||
== 使い方
|
||||
|
||||
=== 関数として使う.
|
||||
|
||||
require "irb/xmp"
|
||||
xmp <<END
|
||||
foo = 1
|
||||
foo
|
||||
END
|
||||
---
|
||||
foo = 1
|
||||
==>1
|
||||
foo
|
||||
==>1
|
||||
|
||||
=== XMPインスタンスを用いる.
|
||||
|
||||
この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい
|
||||
ます.
|
||||
|
||||
require "irb/xmp"
|
||||
xmp = XMP.new
|
||||
xmp.puts <<END
|
||||
foo = 1
|
||||
foo
|
||||
END
|
||||
xmp.puts <<END
|
||||
foo
|
||||
END
|
||||
===
|
||||
foo = 1
|
||||
==>1
|
||||
foo
|
||||
==>1
|
||||
foo
|
||||
==>1
|
||||
|
||||
== コンテキストに関して
|
||||
|
||||
XMPメソッド群のコンテキストは, 呼び出す前のコンテキストで評価されます.
|
||||
明示的にコンテキストを指定するとそのコンテキストで評価します.
|
||||
|
||||
例:
|
||||
|
||||
xmp "foo", an_binding
|
||||
|
||||
:注:
|
||||
マルチスレッドには対応していません.
|
||||
|
||||
= frame.rb
|
||||
現在実行中のフレーム情報を取り扱うためのクラスです.
|
||||
|
||||
* IRB::Frame.top(n = 0)
|
||||
上からn番目のコンテキストを取り出します. nは0が最上位になります.
|
||||
* IRB::Frame.bottom(n = 0)
|
||||
下からn番目のコンテキストを取り出します. nは0が最下位になります.
|
||||
* IRB::Frame.sender
|
||||
センダになっているオブジェクトを取り出します. センダとは, そのメソッ
|
||||
ドを呼び出した側のselfのことです.
|
||||
|
||||
:注:
|
||||
set_trace_funcを用いてRubyの実行をトレースしています. マルチスレッドに
|
||||
は対応していません.
|
||||
|
||||
= completion.rb
|
||||
irbのcompletion機能を提供するものです.
|
||||
|
||||
== 使い方
|
||||
|
||||
% irb -r irb/completion
|
||||
|
||||
とするか, ~/.irbrc 中に
|
||||
|
||||
require "irb/completion"
|
||||
|
||||
を入れてください. irb実行中に require "irb/completion" してもよいです.
|
||||
|
||||
irb実行中に (TAB) を押すとコンプレーションします.
|
||||
|
||||
トップレベルで(TAB)を押すとすべての構文要素, クラス, メソッドの候補がで
|
||||
ます. 候補が唯一ならば完全に補完します.
|
||||
|
||||
irb(main):001:0> in
|
||||
in inspect instance_eval
|
||||
include install_alias_method instance_of?
|
||||
initialize install_aliases instance_variables
|
||||
irb(main):001:0> inspect
|
||||
"main"
|
||||
irb(main):002:0> foo = Object.new
|
||||
#<Object:0x4027146c>
|
||||
|
||||
((|変数名.|))の後に(TAB)を押すと, そのオブジェクトのメソッド一覧がでま
|
||||
す.
|
||||
|
||||
irb(main):003:0> foo.
|
||||
foo.== foo.frozen? foo.protected_methods
|
||||
foo.=== foo.hash foo.public_methods
|
||||
foo.=~ foo.id foo.respond_to?
|
||||
foo.__id__ foo.inspect foo.send
|
||||
foo.__send__ foo.instance_eval foo.singleton_methods
|
||||
foo.class foo.instance_of? foo.taint
|
||||
foo.clone foo.instance_variables foo.tainted?
|
||||
foo.display foo.is_a? foo.to_a
|
||||
foo.dup foo.kind_of? foo.to_s
|
||||
foo.eql? foo.method foo.type
|
||||
foo.equal? foo.methods foo.untaint
|
||||
foo.extend foo.nil?
|
||||
foo.freeze foo.private_methods
|
||||
|
||||
=end
|
||||
|
||||
% Begin Emacs Environment
|
||||
% Local Variables:
|
||||
% mode: text
|
||||
% comment-column: 0
|
||||
% comment-start: "%"
|
||||
% comment-end: "\n"
|
||||
% End:
|
||||
%
|
||||
|
|
@ -1,391 +0,0 @@
|
|||
irb -- interactive ruby
|
||||
$Release Version: 0.6 $
|
||||
$Revision$
|
||||
$Date$
|
||||
by Keiju ISHITSUKA(keiju@ishitsuka.com)
|
||||
=begin
|
||||
= irbとは?
|
||||
|
||||
irbはinteractive rubyの略です. rubyの式を標準入力から簡単に入力/実行す
|
||||
るためのツールです.
|
||||
|
||||
= 起動
|
||||
|
||||
% ruby -r irb -e0
|
||||
% irb
|
||||
|
||||
のいずれかで行ないます. 前者の場合irbへのオプション指定は, 以下のように
|
||||
なります.
|
||||
|
||||
% ruby -r irb -e0 -- -v
|
||||
|
||||
= 使い方
|
||||
|
||||
irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本的には irb と
|
||||
いうコマンドを実行するだけです. irbを実行すると, 以下のようなプロンプ
|
||||
トが表れてきます. 後は, rubyの式を入れて下さい. 式が完結した時点で実行
|
||||
されます.
|
||||
|
||||
dim% irb
|
||||
irb(main):001:0> 1+2
|
||||
3
|
||||
irb(main):002:0> class Foo
|
||||
irb(main):003:1> def foo
|
||||
irb(main):004:2> print 1
|
||||
irb(main):005:2> end
|
||||
irb(main):006:1> end
|
||||
nil
|
||||
irb(main):007:0>
|
||||
|
||||
また, irbはReadlineモジュールにも対応しています. Readlineモジュールが
|
||||
インストールされている時には, それを使うのが標準の動作になります.
|
||||
|
||||
= コマンドオプション
|
||||
|
||||
irb.rb [options] file_name opts
|
||||
options:
|
||||
-f ~/.irbrc を読み込まない.
|
||||
-m bcモード(分数, 行列の計算ができる)
|
||||
-d $DEBUG をtrueにする(ruby -d と同じ)
|
||||
-r load-module ruby -r と同じ.
|
||||
--inspect 結果出力にinspectを用いる(bcモード以外はデフォルト).
|
||||
--noinspect 結果出力にinspectを用いない.
|
||||
--readline readlineライブラリを利用する.
|
||||
--noreadline readlineライブラリを利用しない. デフォルトの動作は,
|
||||
inf-reuby-mode以外でreadlineライブラリを利用しよう
|
||||
とする.
|
||||
--prompt prompt-mode
|
||||
--prompt-mode prompt-mode
|
||||
プロンプトモードを切替えます. 現在定義されているプ
|
||||
ロンプトモードは, default, simple, xmp, inf-rubyが
|
||||
用意されています. デフォルトはdefaultプロンプトモー
|
||||
ドになっています.
|
||||
|
||||
--inf-ruby-mode emacsのinf-ruby-mode用のプロンプト表示を行なう. 特
|
||||
に指定がない限り, readlineライブラリは使わなくなる.
|
||||
--simple-prompt
|
||||
非常にシンプルなプロンプトを用いるモードです.
|
||||
--noprompt プロンプト表示を行なわない.
|
||||
--tracer コマンド実行時にトレースを行なう.
|
||||
--back-trace-limit n
|
||||
バックトレース表示をバックトレースの頭から n, 後ろ
|
||||
からnだけ行なう. デフォルトは16
|
||||
--irb_debug n irbのデバッグデバッグレベルをnに設定する(利用しな
|
||||
い方が無難でしょう).
|
||||
-v, --version irbのバージョンを表示する
|
||||
|
||||
= コンフィギュレーション
|
||||
|
||||
irb起動時に``~/.irbrc''を読み込みます. もし存在しない場合は,
|
||||
``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''の順にloadを試みます.
|
||||
|
||||
オプションを設定する代わりに, 以下のコマンドでもデフォルトの動作を設定
|
||||
できます.
|
||||
|
||||
IRB.conf[:IRB_NAME]="irb"
|
||||
IRB.conf[:MATH_MODE]=false
|
||||
IRB.conf[:USE_TRACER]=false
|
||||
IRB.conf[:USE_LOADER]=false
|
||||
IRB.conf[:IGNORE_SIGINT]=true
|
||||
IRB.conf[:IGNORE_EOF]=false
|
||||
IRB.conf[:INSPECT_MODE]=nil
|
||||
IRB.conf[:IRB_RC] = nil
|
||||
IRB.conf[:BACK_TRACE_LIMIT]=16
|
||||
IRB.conf[:USE_LOADER] = false
|
||||
IRB.conf[:USE_READLINE] = nil
|
||||
IRB.conf[:USE_TRACER] = false
|
||||
IRB.conf[:IGNORE_SIGINT] = true
|
||||
IRB.conf[:IGNORE_EOF] = false
|
||||
IRB.conf[:PROMPT_MODE] = :DEFALUT
|
||||
IRB.conf[:PROMPT] = {...}
|
||||
IRB.conf[:DEBUG_LEVEL]=0
|
||||
IRB.conf[:VERBOSE]=true
|
||||
|
||||
== プロンプトの設定
|
||||
|
||||
プロンプトをカスタマイズしたい時には,
|
||||
|
||||
IRB.conf[:PROMPT]
|
||||
|
||||
を用います. 例えば, .irbrcの中で下のような式を記述します:
|
||||
|
||||
IRB.conf[:PROMPT][:MY_PROMPT] = { # プロンプトモードの名前
|
||||
:PROMPT_I => nil, # 通常のプロンプト
|
||||
:PROMPT_S => nil, # 文字列などの継続行のプロンプト
|
||||
:PROMPT_C => nil, # 式が継続している時のプロンプト
|
||||
:RETURN => " ==>%s\n" # リターン時のプロンプト
|
||||
}
|
||||
|
||||
プロンプトモードを指定したい時には,
|
||||
|
||||
irb --prompt my-prompt
|
||||
|
||||
でそのプロンプトモードで起動されます. または, .irbrcに下式を記述しても
|
||||
OKです.
|
||||
|
||||
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
||||
|
||||
PROMPT_I, PROMPT_S, PROMPT_Cは, フォーマットを指定します.
|
||||
|
||||
%N 起動しているコマンド名が出力される.
|
||||
%m mainオブジェクト(self)がto_sで出力される.
|
||||
%M mainオブジェクト(self)がinspectされて出力される.
|
||||
%l 文字列中のタイプを表す(", ', /, ], `]'は%wの中の時)
|
||||
%NNi インデントのレベルを表す. NNは数字が入りprintfの%NNdと同じ. 省
|
||||
略可能
|
||||
%NNn 行番号を表します.
|
||||
%% %
|
||||
|
||||
例えば, デフォルトのプロンプトモードは:
|
||||
|
||||
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
|
||||
:PROMPT_I => "%N(%m):%03n:%i> ",
|
||||
:PROMPT_S => "%N(%m):%03n:%i%l ",
|
||||
:PROMPT_C => "%N(%m):%03n:%i* ",
|
||||
:RETURN => "%s\n"
|
||||
}
|
||||
|
||||
となっています.
|
||||
|
||||
RETURNは, 現在のところprintf形式です. 将来仕様が変わるかも知れません.
|
||||
|
||||
== サブirbの設定
|
||||
|
||||
コマンドラインオプションおよびIRB.confは(サブ)irb起動時のデフォルトの
|
||||
設定を決めるもので, `5. コマンド'にあるconfで個別の(サブ)irbの設定がで
|
||||
きるようになっています.
|
||||
|
||||
IRB.conf[:IRB_RC]にprocが設定されていると, サブirbを起動する時にその
|
||||
procをirbのコンテキストを引数として呼び出します. これによって個別のサ
|
||||
ブirbごとに設定を変えることができるようになります.
|
||||
|
||||
|
||||
= コマンド
|
||||
|
||||
irb拡張コマンドは, 簡単な名前と頭に`irb_'をつけた名前と両方定義されて
|
||||
います. これは, 簡単な名前がoverrideされた時のためです.
|
||||
|
||||
--- exit, quit, irb_exit
|
||||
終了する.
|
||||
サブirbの場合, そのサブirbを終了する.
|
||||
cbしている場合, そのバインディングのモードを終了する.
|
||||
|
||||
--- conf, irb_context
|
||||
irbの現在の設定を表示する. 設定の変更は, confにメッセージを送るこ
|
||||
とによって行なえる.
|
||||
|
||||
--- conf.back_trace_limit
|
||||
バックトレース表示をバックトレースの頭からn, 後ろからnだけ行なう.
|
||||
デフォルトは16
|
||||
|
||||
--- conf.debug_level = N
|
||||
irb用のデバッグレベルの設定
|
||||
|
||||
--- conf.ignore_eof = true/false
|
||||
^Dが入力された時の動作を設定する. trueの時は^Dを無視する, falseの
|
||||
時はirbを終了する.
|
||||
|
||||
--- conf.ignore_sigint= true/false
|
||||
^Cが入力された時の動作を設定する. false時は, irbを終了する. trueの
|
||||
時の動作は以下のようになる:
|
||||
入力中: これまで入力したものをキャンセルしトップレベルに戻る.
|
||||
実行中: 実行を中止する.
|
||||
|
||||
--- conf.inf_ruby_mode = true/false
|
||||
inf-ruby-mode用のプロンプト表示を行なう. デフォルトはfalse.
|
||||
|
||||
--- conf.inspect_mode = true/false/nil
|
||||
インスペクトモードを設定する.
|
||||
true: インスペクトして表示する.
|
||||
false: 通常のprintで表示する.
|
||||
nil: 通常モードであれば, inspect modeとなり, mathモードの時は, non
|
||||
inspect modeとなる.
|
||||
|
||||
--- conf.irb_level
|
||||
参照のみ. irbが何段cbしているか?
|
||||
|
||||
--- conf.math_mode
|
||||
参照のみ. bcモード(分数, 行列の計算ができます)かどうか?
|
||||
|
||||
--- conf.use_loader = true/false
|
||||
load/require時にirbのfile読み込み機能を用いるモードのスイッチ(デフォ
|
||||
ルトは用いない). このモードはIRB全体に反映される.
|
||||
|
||||
--- conf.prompt_c
|
||||
ifの直後など, 行が継続している時のプロンプト.
|
||||
|
||||
--- conf.prompt_i
|
||||
通常のプロンプト.
|
||||
|
||||
--- conf.prompt_s
|
||||
文字列中などを表すプロンプト.
|
||||
|
||||
--- conf.rc
|
||||
~/.irbrcを読み込んだかどうか?
|
||||
|
||||
--- conf.use_prompt = true/false
|
||||
プロンプト表示するかどうか? デフォルトではプロンプトを表示する.
|
||||
|
||||
--- conf.use_readline = true/false/nil
|
||||
readlineを使うかどうか?
|
||||
true: readlineを使う.
|
||||
false: readlineを使わない.
|
||||
nil: (デフォルト)inf-reuby-mode以外でreadlineライブラリを利用しよ
|
||||
うとする.
|
||||
|
||||
--- conf.verbose=T/F
|
||||
irbからいろいろなメッセージを出力するか?
|
||||
|
||||
--- cb, irb_change_binding [obj]
|
||||
ローカル変数のスコープが違う新たなbindingに移る. objが指定された
|
||||
時は, そのobjをselfとする.
|
||||
|
||||
--- irb [obj]
|
||||
サブirbを立ちあげる. objが指定された時は, そのobjをselfとする.
|
||||
|
||||
--- jobs, irb_jobs
|
||||
サブirbのリスト
|
||||
|
||||
--- fg n, irb_fg n
|
||||
指定したサブirbにスイッチする. nは, 次のものを指定する.
|
||||
|
||||
irb番号
|
||||
スレッド
|
||||
irbオブジェクト
|
||||
self(irb objで起動した時のobj)
|
||||
|
||||
--- kill n, irb_kill n
|
||||
サブirbをkillする. nはfgと同じ.
|
||||
|
||||
|
||||
= システム変数
|
||||
|
||||
_ 前の計算の実行結果を覚えている(ローカル変数).
|
||||
|
||||
= 使用例
|
||||
|
||||
以下のような感じです.
|
||||
|
||||
dim% ruby irb.rb
|
||||
irb(main):001:0> irb # サブirbの立ちあげ
|
||||
irb#1(main):001:0> jobs # サブirbのリスト
|
||||
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
||||
#1->irb#1 on main (#<Thread:0x40125d64> : running)
|
||||
nil
|
||||
irb#1(main):002:0> fg 0 # jobのスイッチ
|
||||
nil
|
||||
irb(main):002:0> class Foo;end
|
||||
nil
|
||||
irb(main):003:0> irb Foo # Fooをコンテキストしてirb
|
||||
# 立ちあげ
|
||||
irb#2(Foo):001:0> def foo # Foo#fooの定義
|
||||
irb#2(Foo):002:1> print 1
|
||||
irb#2(Foo):003:1> end
|
||||
nil
|
||||
irb#2(Foo):004:0> fg 0 # jobをスイッチ
|
||||
nil
|
||||
irb(main):004:0> jobs # jobのリスト
|
||||
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
||||
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
||||
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
||||
nil
|
||||
irb(main):005:0> Foo.instance_methods # Foo#fooがちゃんと定義さ
|
||||
# れている
|
||||
["foo"]
|
||||
irb(main):006:0> fg 2 # jobをスイッチ
|
||||
nil
|
||||
irb#2(Foo):005:0> def bar # Foo#barを定義
|
||||
irb#2(Foo):006:1> print "bar"
|
||||
irb#2(Foo):007:1> end
|
||||
nil
|
||||
irb#2(Foo):010:0> Foo.instance_methods
|
||||
["bar", "foo"]
|
||||
irb#2(Foo):011:0> fg 0
|
||||
nil
|
||||
irb(main):007:0> f = Foo.new
|
||||
#<Foo:0x4010af3c>
|
||||
irb(main):008:0> irb f # Fooのインスタンスでirbを
|
||||
# 立ちあげる.
|
||||
irb#3(#<Foo:0x4010af3c>):001:0> jobs
|
||||
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
||||
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
||||
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
||||
#3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
|
||||
nil
|
||||
irb#3(#<Foo:0x4010af3c>):002:0> foo # f.fooの実行
|
||||
nil
|
||||
irb#3(#<Foo:0x4010af3c>):003:0> bar # f.barの実行
|
||||
barnil
|
||||
irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# jobのkill
|
||||
nil
|
||||
irb(main):009:0> jobs
|
||||
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
||||
nil
|
||||
irb(main):010:0> exit # 終了
|
||||
dim%
|
||||
|
||||
= 使用上の制限
|
||||
|
||||
irbは, 評価できる時点(式が閉じた時点)での逐次実行を行ないます. したがっ
|
||||
て, rubyを直接使った時と, 若干異なる動作を行なう場合があります.
|
||||
|
||||
現在明らかになっている問題点を説明します.
|
||||
|
||||
== ローカル変数の宣言
|
||||
|
||||
rubyでは, 以下のプログラムはエラーになります.
|
||||
|
||||
eval "foo = 0"
|
||||
foo
|
||||
--
|
||||
-:2: undefined local variable or method `foo' for #<Object:0x40283118> (NameError)
|
||||
---
|
||||
NameError
|
||||
|
||||
ところが, irbを用いると
|
||||
|
||||
>> eval "foo = 0"
|
||||
=> 0
|
||||
>> foo
|
||||
=> 0
|
||||
|
||||
となり, エラーを起こしません. これは, rubyが最初にスクリプト全体をコン
|
||||
パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に
|
||||
なる(式が閉じる)と自動的に評価しているからです. 上記の例では,
|
||||
|
||||
evel "foo = 0"
|
||||
|
||||
を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で
|
||||
変数fooは定義されているからです.
|
||||
|
||||
このようなrubyとirbの動作の違いを解決したい場合は, begin...endで括って
|
||||
バッチ的に実行して下さい:
|
||||
|
||||
>> begin
|
||||
?> eval "foo = 0"
|
||||
>> foo
|
||||
>> end
|
||||
NameError: undefined local variable or method `foo' for #<Object:0x4013d0f0>
|
||||
(irb):3
|
||||
(irb_local_binding):1:in `eval'
|
||||
|
||||
== ヒアドキュメント
|
||||
|
||||
現在のところヒアドキュメントの実装は不完全です.
|
||||
|
||||
== シンボル
|
||||
|
||||
シンボルであるかどうかの判断を間違えることがあります. 具体的には式が完了
|
||||
しているのに継続行と見なすことがあります.
|
||||
|
||||
=end
|
||||
|
||||
% Begin Emacs Environment
|
||||
% Local Variables:
|
||||
% mode: text
|
||||
% comment-column: 0
|
||||
% comment-start: "%"
|
||||
% comment-end: "\n"
|
||||
% End:
|
||||
%
|
||||
|
336
doc/shell.rd.jp
336
doc/shell.rd.jp
|
@ -1,336 +0,0 @@
|
|||
-- shell.rb
|
||||
$Release Version: 0.6.0 $
|
||||
$Revision$
|
||||
$Date$
|
||||
by Keiju ISHITSUKA(keiju@ishitsuka.com)
|
||||
|
||||
=begin
|
||||
|
||||
= 目的
|
||||
|
||||
ruby上でsh/cshのようにコマンドの実行及びフィルタリングを手軽に行う.
|
||||
sh/cshの制御文はrubyの機能を用いて実現する.
|
||||
|
||||
= 主なクラス一覧
|
||||
|
||||
== Shell
|
||||
|
||||
Shellオブジェクトはカレントディレクトリを持ち, コマンド実行はそこからの
|
||||
相対パスになります.
|
||||
|
||||
--- Shell#cwd
|
||||
--- Shell#dir
|
||||
--- Shell#getwd
|
||||
--- Shell#pwd
|
||||
|
||||
カレントディレクトリを返す。
|
||||
|
||||
--- Shell#system_path
|
||||
|
||||
コマンドサーチパスの配列を返す。
|
||||
|
||||
--- Shell#umask
|
||||
|
||||
umaskを返す。
|
||||
|
||||
== Filter
|
||||
|
||||
コマンドの実行結果はすべてFilterとしてかえります. Enumerableをincludeし
|
||||
ています.
|
||||
|
||||
= 主なメソッド一覧
|
||||
|
||||
== コマンド定義
|
||||
|
||||
OS上のコマンドを実行するにはまず, Shellのメソッドとして定義します.
|
||||
|
||||
注) コマンドを定義しなくとも直接実行できるShell#systemコマンドもあります.
|
||||
|
||||
--- Shell.def_system_command(command, path = command)
|
||||
|
||||
Shellのメソッドとしてcommandを登録します.
|
||||
|
||||
例)
|
||||
Shell.def_system_command "ls"
|
||||
ls を定義
|
||||
|
||||
Shell.def_system_command "sys_sort", "sort"
|
||||
sortコマンドをsys_sortとして定義
|
||||
|
||||
--- Shell.undef_system_command(command)
|
||||
|
||||
commandを削除します.
|
||||
|
||||
--- Shell.alias_command(ali, command, *opts) {...}
|
||||
|
||||
commandのaliasをします.
|
||||
|
||||
例)
|
||||
Shell.alias_command "lsC", "ls", "-CBF", "--show-control-chars"
|
||||
Shell.alias_command("lsC", "ls"){|*opts| ["-CBF", "--show-control-chars", *opts]}
|
||||
|
||||
--- Shell.unalias_command(ali)
|
||||
|
||||
commandのaliasを削除します.
|
||||
|
||||
--- Shell.install_system_commands(pre = "sys_")
|
||||
|
||||
system_path上にある全ての実行可能ファイルをShellに定義する. メソッ
|
||||
ド名は元のファイル名の頭にpreをつけたものとなる.
|
||||
|
||||
== 生成
|
||||
|
||||
--- Shell.new
|
||||
|
||||
プロセスのカレントディレクトリをカレントディレクトリとするShellオ
|
||||
ブジェクトを生成します.
|
||||
|
||||
--- Shell.cd(path)
|
||||
|
||||
pathをカレントディレクトリとするShellオブジェクトを生成します.
|
||||
|
||||
== プロセス管理
|
||||
|
||||
--- Shell#jobs
|
||||
|
||||
スケジューリングされているjobの一覧を返す.
|
||||
|
||||
--- Shell#kill sig, job
|
||||
|
||||
jobにシグナルsigを送る
|
||||
|
||||
== カレントディレクトリ操作
|
||||
|
||||
--- Shell#cd(path, &block)
|
||||
--- Shell#chdir
|
||||
|
||||
カレントディレクトリをpathにする. イテレータとして呼ばれたときには
|
||||
ブロック実行中のみカレントディレクトリを変更する.
|
||||
|
||||
--- Shell#pushd(path = nil, &block)
|
||||
--- Shell#pushdir
|
||||
|
||||
カレントディレクトリをディレクトリスタックにつみ, カレントディレク
|
||||
トリをpathにする. pathが省略されたときには, カレントディレクトリと
|
||||
ディレクトリスタックのトップを交換する. イテレータとして呼ばれたと
|
||||
きには, ブロック実行中のみpushdする.
|
||||
|
||||
--- Shell#popd
|
||||
--- Shell#popdir
|
||||
|
||||
ディレクトリスタックからポップし, それをカレントディレクトリにする.
|
||||
|
||||
== ファイル/ディレクトリ操作
|
||||
|
||||
--- Shell#foreach(path = nil, &block)
|
||||
|
||||
pathがファイルなら, File#foreach
|
||||
pathがディレクトリなら, Dir#foreach
|
||||
|
||||
--- Shell#open(path, mode)
|
||||
|
||||
pathがファイルなら, File#open
|
||||
pathがディレクトリなら, Dir#open
|
||||
|
||||
--- Shell#unlink(path)
|
||||
|
||||
pathがファイルなら, File#unlink
|
||||
pathがディレクトリなら, Dir#unlink
|
||||
|
||||
--- Shell#test(command, file1, file2)
|
||||
--- Shell#[command, file1, file2]
|
||||
|
||||
ファイルテスト関数testと同じ.
|
||||
例)
|
||||
sh[?e, "foo"]
|
||||
sh[:e, "foo"]
|
||||
sh["e", "foo"]
|
||||
sh[:exists?, "foo"]
|
||||
sh["exists?", "foo"]
|
||||
|
||||
--- Shell#mkdir(*path)
|
||||
|
||||
Dir.mkdirと同じ(複数可)
|
||||
|
||||
--- Shell#rmdir(*path)
|
||||
|
||||
Dir.rmdirと同じ(複数可)
|
||||
|
||||
== コマンド実行
|
||||
|
||||
--- System#system(command, *opts)
|
||||
|
||||
commandを実行する.
|
||||
例)
|
||||
print sh.system("ls", "-l")
|
||||
sh.system("ls", "-l") | sh.head > STDOUT
|
||||
|
||||
--- System#rehash
|
||||
|
||||
リハッシュする
|
||||
|
||||
--- Shell#transact &block
|
||||
|
||||
ブロック中ではshellをselfとして実行する.
|
||||
例)
|
||||
sh.transact{system("ls", "-l") | head > STDOUT}
|
||||
|
||||
--- Shell#out(dev = STDOUT, &block)
|
||||
|
||||
transactを呼び出しその結果をdevに出力する.
|
||||
|
||||
== 内部コマンド
|
||||
|
||||
--- Shell#echo(*strings)
|
||||
--- Shell#cat(*files)
|
||||
--- Shell#glob(patten)
|
||||
--- Shell#tee(file)
|
||||
|
||||
これらは実行すると, それらを内容とするFilterオブジェクトを返します.
|
||||
|
||||
--- Filter#each &block
|
||||
|
||||
フィルタの一行ずつをblockに渡す.
|
||||
|
||||
--- Filter#<(src)
|
||||
|
||||
srcをフィルタの入力とする. srcが, 文字列ならばファイルを, IOであれ
|
||||
ばそれをそのまま入力とする.
|
||||
|
||||
--- Filter#>(to)
|
||||
|
||||
srcをフィルタの出力とする. toが, 文字列ならばファイルに, IOであれ
|
||||
ばそれをそのまま出力とする.
|
||||
|
||||
--- Filter#>>(to)
|
||||
|
||||
srcをフィルタに追加する. toが, 文字列ならばファイルに, IOであれば
|
||||
それをそのまま出力とする.
|
||||
|
||||
--- Filter#|(filter)
|
||||
|
||||
パイプ結合
|
||||
|
||||
--- Filter#+(filter)
|
||||
|
||||
filter1 + filter2 は filter1の出力の後, filter2の出力を行う.
|
||||
|
||||
--- Filter#to_a
|
||||
--- Filter#to_s
|
||||
|
||||
== 組込みコマンド
|
||||
|
||||
--- Shell#atime(file)
|
||||
--- Shell#basename(file, *opt)
|
||||
--- Shell#chmod(mode, *files)
|
||||
--- Shell#chown(owner, group, *file)
|
||||
--- Shell#ctime(file)
|
||||
--- Shell#delete(*file)
|
||||
--- Shell#dirname(file)
|
||||
--- Shell#ftype(file)
|
||||
--- Shell#join(*file)
|
||||
--- Shell#link(file_from, file_to)
|
||||
--- Shell#lstat(file)
|
||||
--- Shell#mtime(file)
|
||||
--- Shell#readlink(file)
|
||||
--- Shell#rename(file_from, file_to)
|
||||
--- Shell#split(file)
|
||||
--- Shell#stat(file)
|
||||
--- Shell#symlink(file_from, file_to)
|
||||
--- Shell#truncate(file, length)
|
||||
--- Shell#utime(atime, mtime, *file)
|
||||
|
||||
これらはFileクラスにある同名のクラスメソッドと同じです.
|
||||
|
||||
--- Shell#blockdev?(file)
|
||||
--- Shell#chardev?(file)
|
||||
--- Shell#directory?(file)
|
||||
--- Shell#executable?(file)
|
||||
--- Shell#executable_real?(file)
|
||||
--- Shell#exist?(file)/Shell#exists?(file)
|
||||
--- Shell#file?(file)
|
||||
--- Shell#grpowned?(file)
|
||||
--- Shell#owned?(file)
|
||||
--- Shell#pipe?(file)
|
||||
--- Shell#readable?(file)
|
||||
--- Shell#readable_real?(file)
|
||||
--- Shell#setgid?(file)
|
||||
--- Shell#setuid?(file)
|
||||
--- Shell#size(file)/Shell#size?(file)
|
||||
--- Shell#socket?(file)
|
||||
--- Shell#sticky?(file)
|
||||
--- Shell#symlink?(file)
|
||||
--- Shell#writable?(file)
|
||||
--- Shell#writable_real?(file)
|
||||
--- Shell#zero?(file)
|
||||
|
||||
これらはFileTestクラスにある同名のクラスメソッドと同じです.
|
||||
|
||||
--- Shell#syscopy(filename_from, filename_to)
|
||||
--- Shell#copy(filename_from, filename_to)
|
||||
--- Shell#move(filename_from, filename_to)
|
||||
--- Shell#compare(filename_from, filename_to)
|
||||
--- Shell#safe_unlink(*filenames)
|
||||
--- Shell#makedirs(*filenames)
|
||||
--- Shell#install(filename_from, filename_to, mode)
|
||||
|
||||
これらはFileToolsクラスにある同名のクラスメソッドと同じです.
|
||||
|
||||
その他, 以下のものがエイリアスされています.
|
||||
|
||||
--- Shell#cmp <- Shell#compare
|
||||
--- Shell#mv <- Shell#move
|
||||
--- Shell#cp <- Shell#copy
|
||||
--- Shell#rm_f <- Shell#safe_unlink
|
||||
--- Shell#mkpath <- Shell#makedirs
|
||||
|
||||
= サンプル
|
||||
|
||||
== ex1
|
||||
|
||||
sh = Shell.cd("/tmp")
|
||||
sh.mkdir "shell-test-1" unless sh.exists?("shell-test-1")
|
||||
sh.cd("shell-test-1")
|
||||
for dir in ["dir1", "dir3", "dir5"]
|
||||
if !sh.exists?(dir)
|
||||
sh.mkdir dir
|
||||
sh.cd(dir) do
|
||||
f = sh.open("tmpFile", "w")
|
||||
f.print "TEST\n"
|
||||
f.close
|
||||
end
|
||||
print sh.pwd
|
||||
end
|
||||
end
|
||||
|
||||
== ex2
|
||||
|
||||
sh = Shell.cd("/tmp")
|
||||
sh.transact do
|
||||
mkdir "shell-test-1" unless exists?("shell-test-1")
|
||||
cd("shell-test-1")
|
||||
for dir in ["dir1", "dir3", "dir5"]
|
||||
if !exists?(dir)
|
||||
mkdir dir
|
||||
cd(dir) do
|
||||
f = open("tmpFile", "w")
|
||||
f.print "TEST\n"
|
||||
f.close
|
||||
end
|
||||
print pwd
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
== ex3
|
||||
|
||||
sh.cat("/etc/printcap") | sh.tee("tee1") > "tee2"
|
||||
(sh.cat < "/etc/printcap") | sh.tee("tee11") > "tee12"
|
||||
sh.cat("/etc/printcap") | sh.tee("tee1") >> "tee2"
|
||||
(sh.cat < "/etc/printcap") | sh.tee("tee11") >> "tee12"
|
||||
|
||||
== ex4
|
||||
|
||||
print sh.cat("/etc/passwd").head.collect{|l| l =~ /keiju/}
|
||||
|
||||
=end
|
|
@ -1,6 +1,6 @@
|
|||
MANIFEST
|
||||
etc.c
|
||||
etc.txt
|
||||
etc.txt.jp
|
||||
etc.txt.ja
|
||||
depend
|
||||
extconf.rb
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" etc.doc - -*- Indented-Text -*- created at: Fri Jul 14 00:47:15 JST 1995
|
||||
.\" etc.txt - -*- Indented-Text -*- created at: Fri Jul 14 00:47:15 JST 1995
|
||||
|
||||
** Etc(Module)
|
||||
|
||||
|
|
|
@ -1,72 +0,0 @@
|
|||
.\" etc.doc - -*- Indented-Text -*- created at: Fri Jul 14 00:47:15 JST 1995
|
||||
|
||||
** Etc(モジュール)
|
||||
|
||||
/etcディレクトリ以下の情報を得るためのモジュール.クラスにインクルード
|
||||
して使うこともできる.
|
||||
|
||||
Module Function:
|
||||
|
||||
getlogin
|
||||
|
||||
自分のlogin名を返す.これが失敗した場合はgetpwuid()を用いると
|
||||
良い.
|
||||
|
||||
getpwnam(name)
|
||||
|
||||
/etc/passwdファイル(あるいはDBMファイルやNISデータベース)を検
|
||||
索し,nameの名前を持つpasswdエントリを返す.戻り値はpasswd構造
|
||||
体で以下のメンバを持つ.
|
||||
|
||||
struct passwd
|
||||
name # ユーザ名(文字列)
|
||||
passwd # パスワード(文字列)
|
||||
uid # ユーザID(整数)
|
||||
gid # グループID(整数)
|
||||
gecos # gecosフィールド(文字列)
|
||||
dir # ホームディレクトリ(文字列)
|
||||
shell # ログインシェル(文字列)
|
||||
# 以降のメンバはシステムによっては提供されない.
|
||||
change # パスワード変更時間(整数)
|
||||
quota # クォータ(整数)
|
||||
age # エージ(整数)
|
||||
class # ユーザアクセスクラス(文字列)
|
||||
comment # コメント(文字列)
|
||||
expire # アカウント有効期限(整数)
|
||||
end
|
||||
|
||||
詳細はgetpwnam(3)を参照のこと.
|
||||
|
||||
getpwuid([uid])
|
||||
|
||||
uidをユーザIDとするpasswdエントリを返す.戻り値はgetpwnam()と
|
||||
同様である.引数を省略した場合にはgetuid()の値を用いる.詳細は
|
||||
getpwuid(3)を参照のこと.
|
||||
|
||||
getgrgid(gid)
|
||||
|
||||
/etc/groupファイル(あるいは…getpwnam参照)を検索し,gidをグルー
|
||||
プIDとするグループエントリを返す.戻り値はgroup構造体で以下の
|
||||
メンバを持つ.
|
||||
|
||||
struct group
|
||||
name # グループ名(文字列)
|
||||
passwd # グループのパスワード(文字列)
|
||||
gid # グループID(整数)
|
||||
mem # グループメンバ名の配列
|
||||
end
|
||||
|
||||
詳細はgetgrgid(3)を参照のこと.
|
||||
|
||||
getgrnam(name)
|
||||
|
||||
nameという名前のグループエントリを返す.戻り値はgetgrgid()と同
|
||||
様である.詳細はgetgrnam(3)を参照.
|
||||
|
||||
group
|
||||
|
||||
全てのグループエントリを順にアクセスするためのイテレータ.
|
||||
|
||||
passwd
|
||||
|
||||
全てのpasswdエントリを順にアクセスするためのイテレータ.
|
|
@ -2,7 +2,7 @@ MANIFEST
|
|||
depend
|
||||
extconf.rb
|
||||
md5.txt
|
||||
md5.txt.jp
|
||||
md5.txt.ja
|
||||
md5.h
|
||||
md5c.c
|
||||
md5init.c
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" md5.doc - -*- Indented-Text -*- created at: Fri Aug 2 12:01:27 JST 1996
|
||||
.\" md5.txt - -*- Indented-Text -*- created at: Fri Aug 2 12:01:27 JST 1996
|
||||
|
||||
** MD5(Class)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" md5.doc - -*- Indented-Text -*- created at: Fri Aug 2 12:01:27 JST 1996
|
||||
.\" md5.txt.ja - -*- Indented-Text -*- created at: Fri Aug 2 12:01:27 JST 1996
|
||||
|
||||
** MD5(クラス)
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
MANIFEST
|
||||
README
|
||||
README.expect
|
||||
README.expect.jp
|
||||
README.jp
|
||||
README.expect.ja
|
||||
README.ja
|
||||
depend
|
||||
expect_sample.rb
|
||||
extconf.rb
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
README for expect
|
||||
by A. Ito, 28 October, 1998
|
||||
|
||||
Expectライブラリは,tcl の expect パッケージと似たような機能を
|
||||
IOクラスに追加します.
|
||||
|
||||
追加されるメソッドの使い方は次の通りです.
|
||||
|
||||
IO#expect(pattern,timeout=9999999)
|
||||
|
||||
pattern は String か Regexp のインスタンス,timeout は Fixnum
|
||||
のインスタンスです.timeout は省略できます.
|
||||
このメソッドがブロックなしで呼ばれた場合,まずレシーバである
|
||||
IOオブジェクトから pattern にマッチするパターンが読みこまれる
|
||||
まで待ちます.パターンが得られたら,そのパターンに関する配列を
|
||||
返します.配列の最初の要素は,pattern にマッチするまでに読みこ
|
||||
まれた内容の文字列です.2番目以降の要素は,pattern の正規表現
|
||||
の中にアンカーがあった場合に,そのアンカーにマッチする部分です.
|
||||
もしタイムアウトが起きた場合は,このメソッドはnilを返します.
|
||||
このメソッドがブロック付きで呼ばれた場合には,マッチした要素の
|
||||
配列がブロック引数として渡され,ブロックが評価されます.
|
|
@ -1,89 +0,0 @@
|
|||
pty 拡張モジュール version 0.3 by A.ito
|
||||
|
||||
1. はじめに
|
||||
|
||||
この拡張モジュールは,仮想tty (pty) を通して適当なコマンドを
|
||||
実行する機能を ruby に提供します.
|
||||
|
||||
2. インストール
|
||||
|
||||
次のようにしてインストールしてください.
|
||||
|
||||
(1) ruby extconf.rb
|
||||
|
||||
を実行すると Makefile が生成されます.
|
||||
|
||||
(2) make; make install を実行してください.
|
||||
|
||||
3. 何ができるか
|
||||
|
||||
この拡張モジュールは,PTY というモジュールを定義します.その中
|
||||
には,次のようなモジュール関数が含まれています.
|
||||
|
||||
getpty(command)
|
||||
spawn(command)
|
||||
|
||||
この関数は,仮想ttyを確保し,指定されたコマンドをその仮想tty
|
||||
の向こうで実行し,配列を返します.戻り値は3つの要素からなる
|
||||
配列です.最初の要素は仮想ttyから読み出すためのIOオブジェクト,
|
||||
2番目は書きこむためのIOオブジェクト,3番目は子プロセスのプロ
|
||||
セスIDです.この関数がイテレータとして呼ばれた場合,これらの
|
||||
要素はブロックパラメータとして渡され,関数自体はnilを返します.
|
||||
|
||||
この関数によって作られたサブプロセスが動いている間,子プロセス
|
||||
の状態を監視するために SIGCHLD シグナルを捕捉します.子プロセス
|
||||
が終了したり停止した場合には,例外が発生します.この間,すべての
|
||||
SIGCHLD が PTY モジュールのシグナルハンドラに捕捉されるので,
|
||||
サブプロセスを生成する他の関数(system() とか IO.popen()など)を
|
||||
使うと,予期しない例外が発生することがあります.これを防ぐため
|
||||
には,下記のprotect_signal()を参照してください.
|
||||
|
||||
この関数がブロックパラメータ付きで呼ばれた場合には,そのブロック
|
||||
の中でのみ SIGCHLD が捕捉されます.したがって,ブロックパラメータ
|
||||
として渡されたIOオブジェクトを,ブロックの外に持ち出して使うの
|
||||
は勧められません.
|
||||
|
||||
|
||||
protect_signal
|
||||
|
||||
この関数はイテレータです.ここで指定されたブロックの中では,
|
||||
子プロセスが終了しても例外を発生しません.この関数を使うことで,
|
||||
PTYの子プロセスが動いている間でも,system()や IO.popen()などの
|
||||
関数を安全に使うことができます.例えば,
|
||||
|
||||
PTY.spawn("command_foo") do |r,w|
|
||||
...
|
||||
...
|
||||
PTY.protect_signal do
|
||||
system "some other commands"
|
||||
end
|
||||
...
|
||||
end
|
||||
|
||||
このような記述により,"some other commands" が終了したときに
|
||||
例外が発生するのを防げます.
|
||||
|
||||
reset_signal
|
||||
|
||||
PTY の子プロセスが動いていても,そのプロセスの終了時に例外が発生
|
||||
しないようにします.
|
||||
|
||||
4. 利用について
|
||||
|
||||
伊藤彰則が著作権を保有します.
|
||||
|
||||
ソースプログラムまたはドキュメントに元の著作権表示が改変されずに
|
||||
表示されている場合に限り,誰でも,このソフトウェアを無償かつ著作
|
||||
権者に無断で利用・配布・改変できます.利用目的は限定されていませ
|
||||
ん.
|
||||
|
||||
このプログラムの利用・配布その他このプログラムに関係する行為によ
|
||||
って生じたいかなる損害に対しても,作者は一切責任を負いません.
|
||||
|
||||
5. バグ報告等
|
||||
|
||||
バグレポートは歓迎します.
|
||||
|
||||
aito@ei5sun.yz.yamagata-u.ac.jp
|
||||
|
||||
まで電子メールでバグレポートをお送りください.
|
|
@ -1,5 +1,6 @@
|
|||
MANIFEST
|
||||
README
|
||||
README.ja
|
||||
depend
|
||||
extconf.rb
|
||||
readline.c
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
GNU Readline Libraryを利用するための拡張モジュールです。
|
||||
|
||||
require "readline"
|
||||
include Readline
|
||||
|
||||
line = readline("Prompt> ", true)
|
||||
|
||||
のように使用してください。
|
||||
|
||||
[Readline]
|
||||
|
||||
<モジュール関数>
|
||||
|
||||
readline(prompt, add_history=nil)
|
||||
|
||||
一行入力を読み込みます。
|
||||
add_historyがtrueの場合、ヒストリに読み込んだ文字列を追加します。
|
||||
|
||||
<クラスメソッド>
|
||||
|
||||
completion_proc = proc
|
||||
|
||||
補完時の動作を決定するProcオブジェクトを指定します。
|
||||
procは引数に入力文字列を取り、候補文字列の配列を返すように
|
||||
してください。
|
||||
|
||||
completion_proc
|
||||
|
||||
補完時の動作を決定するProcオブジェクトを返します。
|
||||
|
||||
completion_case_fold = case_fold
|
||||
|
||||
補完時に大文字小文字を区別しない場合、trueを指定します。
|
||||
|
||||
completion_case_fold
|
||||
|
||||
補完時に大文字小文字を区別しない場合、trueを返します。
|
||||
|
||||
completion_append_character = char
|
||||
|
||||
補完時に付加される文字を文字列で指定します。先頭の一文字が
|
||||
設定され、空文字列 ("") または nil を指定すると何も付加
|
||||
されなくなります。
|
||||
|
||||
completion_append_character
|
||||
|
||||
補完時に付加される文字を文字列で返します。デフォルトは
|
||||
空白 (" ") です。
|
||||
|
||||
vi_editing_mode
|
||||
|
||||
VIモードになります。
|
||||
|
||||
emacs_editing_mode
|
||||
|
||||
Emacsモードになります。
|
||||
|
||||
<クラス定数>
|
||||
|
||||
HISTORY
|
||||
|
||||
ヒストリに対する操作はこの定数を通して行ってください。
|
||||
配列と同じように扱えるようになっています。
|
Loading…
Add table
Add a link
Reference in a new issue