From eaddc4a94bf1dfb95ef889e2dd5521b657845675 Mon Sep 17 00:00:00 2001 From: knu Date: Thu, 19 Jul 2001 05:44:26 +0000 Subject: 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/trunk@1629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- doc/shell.rd.ja | 336 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 336 insertions(+) create mode 100644 doc/shell.rd.ja (limited to 'doc/shell.rd.ja') diff --git a/doc/shell.rd.ja b/doc/shell.rd.ja new file mode 100644 index 0000000000..073e71ea42 --- /dev/null +++ b/doc/shell.rd.ja @@ -0,0 +1,336 @@ + -- 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 -- cgit v1.2.3