Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > shellライブラリ > Shellクラス
class Shell
クラスの継承リスト: Shell < Object < Kernel < BasicObject
Abstract
Shellオブジェクトはカレントディレクトリを持ち, コマンド実行はそこからの相対パスになります.
特異メソッド
alias_command(alias, command, *opts) {...} -> self
-
コマンドの別名(エイリアス)を作成します。 コマンドが無い場合は、Shell.def_system_command などであらかじめ作成します.
- [PARAM] alias:
- エイリアスの名前を文字列で指定します.
- [PARAM] command:
- コマンド名を文字列で指定します.
- [PARAM] ?:
- *opts command で指定したコマンドのオプションを指定します.
使用例: ls -la | sort -k 5 のような例。
Shell.def_system_command("ls") Shell.alias_command("lsla", "ls", "-a", "-l") Shell.def_system_command("sort") sh = Shell.new sh.transact { (lsla | sort("-k 5")).each {|l| puts l } }
cd(path = nil, verbose = self.verbose) -> self
-
pathをカレントディレクトリとするShellオブジェクトを生成します.
- [PARAM] path:
- カレントディレクトリとするディレクトリを文字列で指定します。
- [PARAM] verbose:
- true を指定すると冗長な出力を行います。
使用例
require 'shell' sh = Shell.new sh.cd("/tmp")
debug -> bool | Integer
debug? -> bool | Integer
debug=(val)
-
デバッグ用のフラグの設定および、参照を行います。
- [PARAM] val:
- bool 値や整数値を指定します。詳細は下記を参照してください。
# debug: true -> normal debug # debug: 1 -> eval definition debug # debug: 2 -> detail inspect debug
def_system_command(command, path = command) -> nil
-
Shellのメソッドとしてcommandを登録します.
OS上のコマンドを実行するにはまず, Shellのメソッドとして定義します. 注) コマンドを定義しなくとも直接実行できるShell#systemコマンドもあります.
- [PARAM] command:
- Shell のメソッドとして定義するコマンドを文字列で指定します。
- [PARAM] path:
- command のパスを指定します。 指定しない場合はcommand と同じになります。
例)
Shell.def_system_command "ls" # ls を定義 Shell.def_system_command "sys_sort", "sort" # sortコマンドをsys_sortとして定義 sh = Shell.new sh.transact { ls.each { |l| puts l } (ls("-l") | sys_sort("-k 5")).each {|l| puts l } }
default_record_separator -> String
default_record_separator=(rs)
-
執筆者募集
Shell で用いられる入力レコードセパレータを表す文字列を設定および参照します。 なにも指定しない場合は$/ の値が用いられます。
- [PARAM] rs:
- Shell で用いられる入力レコードセパレータを表す文字列を指定します。
default_system_path -> Array
default_system_path=(path)
-
Shellでもちいられるコマンドを検索する対象のパスを設定および、参照します。
- [PARAM] path:
- Shellでもちいられるコマンドを検索する対象のパスを文字列で指定します。
動作例
require 'shell' p Shell.default_system_path # 例 #=> [ "/opt/local/bin", "/opt/local/sbin", "/usr/bin", "/bin", "/usr/sbin", "/sbin", "/usr/local/bin", "/usr/X11/bin", "/Users/kouya/bin"] Shell.default_system_path = ENV["HOME"] + "/bin" p Shell.default_system_path # => "/Users/kouya/bin"
install_system_commands(pre = "sys_") -> ()
-
system_path上にある全ての実行可能ファイルをShellに定義する. メソッ ド名は元のファイル名の頭にpreをつけたものとなる.
- [PARAM] pre:
- Shellに定義するメソッド名の先頭に付加される文字列を指定します。
使用例: ls -l | head -n 5 のような例。
Shell.install_system_commands sh = Shell.new sh.verbose = false sh.transact { (sys_ls("-l") | sys_head("-n 5")).each {|l| puts l } }
new(pwd = Dir.pwd, umask = nil) -> Shell
-
プロセスのカレントディレクトリをpwd で指定されたディレクトリとするShellオ ブジェクトを生成します.
- [PARAM] pwd:
- プロセスのカレントディレクトリをpwd で指定されたディレクトリとします。 指定しない場合は、Dir.pwd が使用されます。
- [PARAM] umask:
- ファイル作成の際に用いられる umask を使用します。
unalias_command(alias) -> ()
-
commandのaliasを削除します.
- [PARAM] alias:
- 削除したいエイリアスの名前を文字列で指定します。
- [EXCEPTION] NameError:
- alias で指定したコマンドが無い場合に発生します。
使用例: ls -la | sort -k 5 のような例。
Shell.def_system_command("ls") Shell.alias_command("lsla", "ls", "-a", "-l") Shell.def_system_command("sort") sh = Shell.new sh.transact { (lsla | sort("-k 5")).each {|l| puts l } } Shell.unalias_command("lsla") begin Shell.unalias_command("lsla") rescue NameError => err puts err end
undef_system_command(command) -> Shell::CommandProcessor
-
commandを削除します.
- [PARAM] command:
- 削除するコマンドの文字列を指定します。
動作例:
Shell.def_system_command("ls") # ls を定義 Shell.undef_system_command("ls") # ls を 削除 sh = Shell.new begin sh.transact { ls("-l").each {|l| puts l } } rescue NameError => err puts err end
verbose -> bool
verbose? -> bool
verbose=(flag)
-
true ならば冗長な出力の設定を行います。
- [PARAM] flag:
- true ならば冗長な出力の設定を行います。
インスタンスメソッド
test(command, file1, file2 = nil) -> bool
self[command, file1, file2 = nil] -> bool
-
執筆者募集。 ファイルテスト関数testと同じです。
- [PARAM] command:
- ファイルテスト関数testと同じです。
- [PARAM] file1:
- 文字列でファイルへのパスを指定します。 ファイルテスト関数testに渡される第一引数となります。
- [PARAM] file2:
- 文字列でファイルへのパスを指定します。 ファイルテスト関数testに渡される第二引数となります。省略可。
例:
require 'shell' Shell.verbose = false sh = Shell.new begin sh.mkdir("foo") rescue end p sh[?e, "foo"] #=> true p sh[:e, "foo"] #=> true p sh["e", "foo"] #=> true p sh[:exists?, "foo"] #=> true p sh["exists?", "foo"] #=> true
atime(filename) -> Time
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] File.atime
basename(filename, suffix = "") -> String
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列を指定します。
- [PARAM] suffix:
- サフィックスを文字列で与えます。'.*' という文字列を与えた場合、'*' はワイルドカードとして働
き
'.' を含まない任意の文字列にマッチします。
[SEE_ALSO] File.basename
blockdev?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] FileTest.#blockdev?
cat(*files) -> Shell::Filter
-
実行すると, それらを内容とする Filter オブジェクトを返します.
- [PARAM] ?:
- *files シェルコマンド cat に与えるファイル名を文字列で指定します。
動作例
require 'shell' Shell.def_system_command("head") sh = Shell.new sh.transact { glob("*.txt").to_a.each { |file| file.chomp! cat(file).each { |l| echo(l) | tee(file + ".tee") >> "all.tee" } } }
cd(path, &block) -> self
chdir(path, &block) -> self
-
カレントディレクトリをpathにする. イテレータとして呼ばれたときには ブロック実行中のみカレントディレクトリを変更する.
- [PARAM] path:
- カレントディレクトリを文字列で指定します.
- [PARAM] block:
- path で指定したディレクトリで行う操作をブロックで指定します.
使用例
require 'shell' sh = Shell.new sh.transact { cd("/tmp"){ p cwd #=> "/tmp" } p cwd #=> "/Users/kouya/rbmanual" }
chardev?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] FileTest.#chardev?
chmod(mode, *filename) -> Integer
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列を指定します。
- [PARAM] mode:
- chmod(2) と同様に整数で指定します。
[SEE_ALSO] File.chmod
chown(owner, group, *filename) -> Integer
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] owner:
- chown(2) と同様に数値で指定します。nil または -1 を指定することで、オーナーを現在の>ままにすることができます。
- [PARAM] group:
- chown(2) と同様に数値で指定します。nil または -1 を指定することで、グループを現在の>ままにすることができます。
- [PARAM] filename:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.chown
ctime(filename) -> Time
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] File.ctime
cwd -> String
dir -> String
getwd -> String
pwd -> String
-
カレントディレクトリのパスを文字列で返します。
使用例
require 'shell' sh = Shell.new p sh.cwd # 例 #=> "/Users/kouya/tall"
delete(*filename) -> Integer
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.delete
directory?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] FileTest.#directory?
dirname(filename) -> String
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] [[File.dirname]]
echo(*strings) -> Shell::Filter
-
実行すると, それらを内容とする Filter オブジェクトを返します.
- [PARAM] ?:
- *strings シェルコマンド echo に与える引数を文字列で指定します。
動作例
require 'shell' Shell.def_system_command("head") sh = Shell.new sh.transact { glob("*.txt").to_a.each { |file| file.chomp! cat(file).each { |l| echo(l) | tee(file + ".tee") >> "all.tee" } } }
executable?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#executable?
executable_real?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#executable_real?
exist?(file) -> bool
exists?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] FileTest.#exist? FileTest.#exists?
expand_path(path)
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] path:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.expand_path
file?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] FileTest.#file?
foreach(path = nil, &block) -> ()
-
pathがファイルなら, File#foreach pathがディレクトリなら, Dir#foreach の動作をします。
- [PARAM] path:
- ファイルもしくはディレクトリのパスを文字列で指定します。
使用例
require 'shell' Shell.verbose = false sh = Shell.new sh.foreach("/tmp"){|f| puts f }
ftype(filename) -> String
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.ftype
glob(patten) -> Shell::Filter
-
実行すると, それらを内容とする Filter オブジェクトを返します.
- [PARAM] patten:
- シェルコマンド glob に与えるパターンを指定します。 パターンの書式については、Dir.[]を参照してください。
動作例
require 'shell' Shell.def_system_command("head") sh = Shell.new sh.transact { glob("*.txt").to_a.each { |file| file.chomp! cat(file).each { |l| echo(l) | tee(file + ".tee") >> "all.tee" } } }
[SEE_ALSO] Dir.[]
grpowned?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] FileTest.#grpowned?
jobs -> Array
-
執筆者募集. スケジューリングされているjobの一覧を返す.
join(*item) -> String
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] item:
- 連結したいディレクトリ名やファイル名を文字列で与えます。
[SEE_ALSO] File.join
kill(sig, job)
-
執筆者募集. jobにシグナルsigを送る.
link(old, new) -> 0
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] old:
- ファイル名を表す文字列を指定します。
- [PARAM] new:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.link
lstat(filename) -> File::Stat
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.lstat
mkdir(*path) -> Array
-
Dir.mkdirと同じです。 (複数可)
- [PARAM] ?:
- *path 作成するディレクトリ名を文字列で指定します。
- [RETURN]
- 作成するディレクトリの一覧の配列を返します。
使用例
require 'shell' Shell.verbose = false sh = Shell.new begin p sh.mkdir("foo") #=> ["foo"] rescue => err puts err end
mtime(filename) -> Time
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] File.mtime
open(path, mode) -> object
-
pathがファイルなら, File#open pathがディレクトリなら, Dir#open の動作をします。
out(dev = STDOUT, &block) -> ()
-
Shell#transact を呼び出しその結果を dev に出力します。
- [PARAM] dev:
- 出力先をIO オブジェクトなどで指定します。
- [PARAM] block:
- transact 内部で実行するシェルを指定します。
使用例:
require 'shell' Shell.def_system_command("head") sh = Shell.new File.open("out.txt", "w"){ |fp| sh.out(fp) { system("ls", "-l") | head("-n 3") } }
owned?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] FileTest.#owned?
pipe?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列か IO オブジェクトを指定します。
[SEE_ALSO] FileTest.#pipe?
popd -> ()
popdir -> ()
-
ディレクトリスタックからポップし, それをカレントディレクトリにする.
動作例
require 'shell' Shell.verbose = false sh = Shell.new sh.pushd("/tmp") p sh.cwd #=> "/tmp" sh.pushd("/usr") p sh.cwd #=> "/usr" sh.popd p sh.cwd #=> "/tmp"
pushd(path = nil, &block) -> object
pushdir(path = nil, &block) -> object
-
カレントディレクトリをディレクトリスタックにつみ, カレントディレク トリをpathにする. pathが省略されたときには, カレントディレクトリと ディレクトリスタックのトップを交換する. イテレータとして呼ばれたと きには, ブロック実行中のみpushdする.
- [PARAM] path:
- カレントディレクトリをpathにする。文字列で指定します。
- [PARAM] block:
- イテレータとして呼ぶ場合, ブロックを指定します。
動作例
require 'shell' Shell.verbose = false sh = Shell.new sh.pushd("/tmp") p sh.cwd #=> "/tmp" sh.pushd("/usr") p sh.cwd #=> "/usr" sh.popd p sh.cwd #=> "/tmp" sh.pushd("/usr/local"){ p sh.cwd #=> "/usr/local" } p sh.cwd #=> "/tmp"
readable?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#readable?
readable_real?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#readable_real?
readlink(path) -> String
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] path:
- シンボリックリンクを表す文字列を指定します。
[SEE_ALSO] File.readlink
rehash -> Hash
-
執筆者募集。 リハッシュする。通常使う事はありません。
rename(from, to) -> 0
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] from:
- ファイルの名前を文字列で与えます。
- [PARAM] to:
- 新しいファイル名を文字列で与えます。
[SEE_ALSO] File.rename
rmdir(*path) -> ()
-
Dir.rmdirと同じです。 (複数可)
- [PARAM] ?:
- *path 削除するディレクトリ名を文字列で指定します。
setgid?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#setgid?
setuid?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#setuid?
size(file) -> Integer
size?(file) -> Integer | nil
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#size FileTest.#size?
socket?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#socket?
split(pathname) -> [String]
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] pathname:
- パス名を表す文字列を指定します。
[SEE_ALSO] File.split
stat(filename) -> File::Stat
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] File.stat
sticky?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#sticky?
symlink(old, new) -> 0
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] old:
- ファイル名を表す文字列を指定します。
- [PARAM] new:
- シンボリックリンクを表す文字列を指定します。
[SEE_ALSO] File.symlink
symlink?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#symlink?
system(command, *opts) -> Shell::Filter
-
commandを実行する.
- [PARAM] command:
- 実行するコマンドのパスを文字列で指定します。
- [PARAM] ?:
- *opt command のオプションを文字列で指定します。複数可。
使用例:
require 'shell' Shell.verbose = false sh = Shell.new print sh.system("ls", "-l") Shell.def_system_command("head") sh.system("ls", "-l") | sh.head("-n 3") > STDOUT
system_path -> Array
system_path=(path)
-
コマンドサーチパスの配列を返す。
- [PARAM] path:
- コマンドサーチパスの配列を指定します。
使用例
require 'shell' sh = Shell.new sh.system_path = [ "./" ] p sh.system_path #=> ["./"]
tee(file) -> Shell::Filter
-
実行すると, それらを内容とする Filter オブジェクトを返します.
- [PARAM] file:
- シェルコマンドtee に与えるファイル名を文字列で指定します。
動作例
require 'shell' Shell.def_system_command("head") sh = Shell.new sh.transact { glob("*.txt").to_a.each { |file| file.chomp! cat(file).each { |l| echo(l) | tee(file + ".tee") >> "all.tee" } } }
transact { ... } -> object
-
ブロック中で shell を self として実行します。
例:
require 'shell' Shell.def_system_command("head") sh = Shell.new sh.transact{ system("ls", "-l") | head > STDOUT # transact の中では、 # sh.system("ls", "-l") | sh.head > STDOUT と同じとなる。 }
truncate(path, length) -> 0
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] path:
- パスを表す文字列を指定します。
- [PARAM] length:
- 変更したいサイズを整数で与えます。
[SEE_ALSO] File.truncate
umask -> object
-
umaskを返します。
unlink(path) -> self
-
pathがファイルなら, File#unlink pathがディレクトリなら, Dir#unlink の動作をします。
- [PARAM] path:
- くわしくは、File.unlink, Dir.unlinkを参照してください。
utime(atime, mtime, *filename) -> Integer
-
Fileクラスにある同名のクラスメソッドと同じです.
- [PARAM] filename:
- ファイル名を表す文字列を指定します。
- [PARAM] atime:
- 最終アクセス時刻を Time か、起算時からの経過秒数を数値で指定します。
- [PARAM] utime:
- 更新時刻を Time か、起算時からの経過秒数を数値で指定します。
[SEE_ALSO] File.utime
writable?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#writable?
writable_real?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#writable_real?
zero?(file) -> bool
-
FileTestクラスにある同名のクラスメソッドと同じです.
- [PARAM] file:
- ファイル名を表す文字列を指定します。
[SEE_ALSO] FileTest.#zero?