Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > fileutilsライブラリ > FileUtilsモジュール
クラスの継承リスト: FileUtils
基本的なファイル操作を集めたモジュールです。
引数 options で使用できるオプションの説明です。 メソッドごとに使用できるオプションは決まっています。 不正なオプションを与えると ArgumentError が発生します。
真を指定すると実際の処理は行いません。
真を指定すると更新時刻と、可能なら所有ユーザ・所有グループもコピーします。
真を指定すると詳細を出力します。
パーミッションを8進数で指定します。
真を指定すると作業中すべての StandardError を無視します。
真を指定するとファイルを作成しません。
真を指定すると src についてだけシンボリックリンクの指す 内容をコピーします。偽の場合はシンボリックリンク自体をコピーします。
真を指定するとコピーを実行する前にコピー先を削除します。
真を指定するとファイルの削除に FileUtils.#remove_entry_secure を使用します。
時刻を Time か、起算時からの経過秒数を数値で指定します。
真を指定すると指定したディレクトリの親ディレクトリも含めて削除します。
collect_method(opt) -> Array
[permalink][rdoc]与えられたオプションを持つメソッド名の配列を返します。
require 'fileutils' FileUtils.collect_method(:preserve) # => ["cp", "cp_r", "copy", "install"]
commands -> Array
[permalink][rdoc]何らかのオプションを持つメソッド名の配列を返します。
require 'fileutils' FileUtils.commands # => ["chmod", "cp", "cp_r", "install", ...]
have_option?(mid, opt) -> bool
[permalink][rdoc]mid というメソッドが opt というオプションを持つ場合、真を返します。 そうでない場合は、偽を返します。
options -> Array
[permalink][rdoc]オプション名の配列を返します。
require 'fileutils' FileUtils.options # => ["verbose", "mode", "noop", "parents", "force", "preserve", "dereference_root", "remove_destination", "secure", "mtime", "nocreate"]
options_of(mid) -> Array
[permalink][rdoc]与えられたメソッド名で使用可能なオプション名の配列を返します。
require 'fileutils' FileUtils.options_of(:rm) # => ["noop", "verbose", "force"]
cd(dir, options = {}) -> nil
[permalink][rdoc]cd(dir, options = {}) {|dir| .... } -> nil
chdir(dir, options = {}) -> nil
chdir(dir, options = {}) {|dir| .... } -> nil
プロセスのカレントディレクトリを dir に変更します。
ブロックとともに呼び出された時はブロック終了後に 元のディレクトリに戻ります。
例:
require 'fileutils' FileUtils.cd('/', {:verbose => true}) # chdir and report it
chmod(mode, list, options = {}) -> Array
[permalink][rdoc]ファイル list のパーミッションを mode に変更します。
例:
# Absolute mode require 'fileutils' FileUtils.chmod(0644, %w(my.rb your.rb his.rb her.rb)) FileUtils.chmod(0755, 'somecommand') FileUtils.chmod(0755, '/usr/bin/ruby', :verbose => true) # Symbolic mode require 'fileutils' FileUtils.chmod("u=wr,go=rr", %w(my.rb your.rb his.rb her.rb)) FileUtils.chmod("u=wrx,go=rx", 'somecommand') FileUtils.chmod("u=wrx,go=rx", '/usr/bin/ruby', :verbose => true)
symbolic mode では以下の指定を 操作対象 演算子 権限 の順番で指定します。
操作対象(複数指定可。省略した場合は a)。
演算子。
権限(複数指定可)。
chmod_R(mode, list, options = {}) -> Array
[permalink][rdoc]ファイル list のパーミッションを再帰的に mode へ変更します。
例:
require 'fileutils' FileUtils.chmod_R(0700, '/tmp/removing')
chown(user, group, list, options = {}) -> Array
[permalink][rdoc]ファイル list の所有ユーザと所有グループを user と group に変更します。
user, group に nil または -1 を渡すとその項目は変更しません。
例:
require 'fileutils' FileUtils.chown 'root', 'staff', '/usr/local/bin/ruby' FileUtils.chown nil, 'bin', Dir.glob('/usr/bin/*'), :verbose => true
chown_R(user, group, list, options = {}) -> Array
[permalink][rdoc]list 以下のファイルの所有ユーザと所有グループを user と group へ再帰的に変更します。
user, group に nil または -1 を渡すとその項目は変更しません。
例:
require 'fileutils' FileUtils.chown 'root', 'staff', '/usr/local/bin/ruby' FileUtils.chown nil, 'bin', Dir.glob('/usr/bin/*'), :verbose => true require 'fileutils' FileUtils.chown_R 'www', 'www', '/var/www/htdocs' FileUtils.chown_R 'cvs', 'cvs', '/var/cvs', :verbose => true
cmp(file_a, file_b) -> bool
[permalink][rdoc]compare_file(file_a, file_b) -> bool
identical?(file_a, file_b) -> bool
ファイル file_a と file_b の内容が同じなら真を返します。
例:
require 'fileutils' FileUtils.cmp('somefile', 'somefile') #=> true FileUtils.cmp('/dev/null', '/dev/urandom') #=> false
compare_stream(io_a, io_b) -> bool
[permalink][rdoc]IO オブジェクト io_a と io_b の内容が同じなら真を返します。
cp(src, dest, options = {}) -> ()
[permalink][rdoc]copy(src, dest, options = {}) -> ()
ファイル src を dest にコピーします。
src にファイルが一つだけ与えられた場合、 dest がディレクトリならdest/src にコピーします。 dest が既に存在ししかもディレクトリでないときは上書きします。
src にファイルが複数与えられた場合、 file1 を dest/file1 にコピー、file2 を dest/file2 にコピー、 というように、ディレクトリ dest の中にファイル file1、file2 …を 同じ名前でコピーします。dest がディレクトリでない場合は例外 Errno::ENOTDIR が発生します。
例:
require 'fileutils' FileUtils.cp 'eval.c', 'eval.c.org' FileUtils.cp(['cgi.rb', 'complex.rb', 'date.rb'], '/usr/lib/ruby/1.8') FileUtils.cp(%w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.8', {:verbose => true})
copy_entry(src, dest, preserve = false, dereference_root = false) -> ()
[permalink][rdoc]ファイル src を dest にコピーします。
src が普通のファイルでない場合はその種別まで含めて完全にコピーします。 src がディレクトリの場合はその中身を再帰的にコピーします。
copy_file(src, dest, preserve = false, dereference_root = true) -> ()
[permalink][rdoc]ファイル src の内容を dest にコピーします。
copy_stream(src, dest) -> ()
[permalink][rdoc]src を dest にコピーします。 src には read メソッド、dest には write メソッドが必要です。
cp_r(src, dest, options = {}) -> ()
[permalink][rdoc]src を dest にコピーします。src がディレクトリであったら再帰的に コピーします。その際 dest がディレクトリなら dest/src にコピーします。
例:
# installing ruby library "mylib" under the site_ruby require 'fileutils' FileUtils.rm_r(site_ruby + '/mylib', {:force => true}) FileUtils.cp_r('lib/', site_ruby + '/mylib') # other sample require 'fileutils' FileUtils.cp_r(%w(mail.rb field.rb debug/), site_ruby + '/tmail') FileUtils.cp_r(Dir.glob('*.rb'), '/home/taro/lib/ruby', {:noop => true, :verbose => true})
pwd -> String
[permalink][rdoc]getwd -> String
プロセスのカレントディレクトリを文字列で返します。
install(src, dest, options = {}) -> ()
[permalink][rdoc]src と dest の内容が違うときだけ src を dest にコピーします。
例:
require 'fileutils' FileUtils.install('ruby', '/usr/local/bin/ruby', {:mode => 0755, :verbose => true}) FileUtils.install('lib.rb', '/usr/local/lib/ruby/site_ruby', {:verbose => true})
ln(src, dest, options = {}) -> ()
[permalink][rdoc]link(src, dest, options = {}) -> ()
src へのハードリンク dest を作成します。
src が一つの場合、 dest がすでに存在しディレクトリであるときは dest/src を作成します。 dest がすでに存在しディレクトリでないならば例外 Errno::EEXIST が発生します。 ただし :force オプションを指定したときは dest を上書きします。
src が複数の場合、 src[0] へのハードリンク dest/src[0]、src[1] への ハードリンク dest/src[1] …を作成します。 dest がディレクトリでない場合は例外 Errno::ENOTDIR が発生します。
例:
require 'fileutils' FileUtils.ln('gcc', 'cc', {:verbose => true}) FileUtils.ln('/usr/bin/emacs21', '/usr/bin/emacs') FileUtils.cd('/bin') FileUtils.ln(%w(cp mv mkdir), '/usr/bin')
ln_s(src, dest, options = {}) -> ()
[permalink][rdoc]symlink(src, dest, options = {}) -> ()
src へのシンボリックリンク dest を作成します。
src が一つの場合、 dest がすでに存在しディレクトリであるときは dest/src を作成します。 dest がすでに存在しディレクトリでないならば例外 Errno::EEXIST が発生します。 ただし :force オプションを指定したときは dest を上書きします。
src が複数の場合、 src[0] へのシンボリックリンク dest/src[0]、src[1] への シンボリックリンク dest/src[1] …を作成します。 dest がディレクトリでない場合は例外 Errno::ENOTDIR が発生します。
例:
require 'fileutils' FileUtils.ln_s('/usr/bin/ruby', '/usr/local/bin/ruby') FileUtils.ln_s('verylongsourcefilename.c', 'c', {:force => true}) FileUtils.ln_s(Dir.glob('bin/*.rb'), '/home/aamine/bin')
ln_sf(src, dest, options = {}) -> ()
[permalink][rdoc]src へのシンボリックリンク dest を作成します。
ln_s(src, dest, :force => true) と同じです。
[SEE_ALSO] FileUtils.#ln_s
mkdir_p(list, options = {}) -> Array
[permalink][rdoc]mkpath(list, options = {}) -> Array
makedirs(list, options = {}) -> Array
ディレクトリ dir とその親ディレクトリを全て作成します。
例えば、
require 'fileutils' FileUtils.mkdir_p('/usr/local/lib/ruby')
は以下の全ディレクトリを (なければ) 作成します。
mkdir(dir, options = {}) -> ()
[permalink][rdoc]ディレクトリ dir を作成します。
例:
require 'fileutils' FileUtils.mkdir('test') FileUtils.mkdir(%w( tmp data )) FileUtils.mkdir('notexist', {:noop => true}) # does not create really
mv(src, dest, options = {}) -> ()
[permalink][rdoc]move(src, dest, options = {}) -> ()
ファイル src を dest に移動します。
src が一つの場合、 dest がすでに存在しディレクトリであるときは src を dest/src へ移動します。 dest がすでに存在しディレクトリでないときは src は dest を上書きします。
src が複数の場合、 src[0] を dest/src[0]、src[1] を dest/src[1] へ移動します。 dest がディレクトリでない場合は例外 Errno::ENOTDIR が発生します。
例:
require 'fileutils' FileUtils.mv('badname.rb', 'goodname.rb') FileUtils.mv('stuff.rb', 'lib/ruby', {:force => true}) FileUtils.mv(['junk.txt', 'dust.txt'], "#{ENV['HOME']}/.trash") FileUtils.mv(Dir.glob('test*.rb'), 'test', {:noop => true, :verbose => true} )
rm(list, options = {}) -> ()
[permalink][rdoc]remove(list, options = {}) -> ()
list で指定された対象を消去します。
例:
require 'fileutils' FileUtils.rm('junk.txt') FileUtils.rm(Dir.glob('*~')) FileUtils.rm('NotExistFile', {:force => true}) # never raises exception
remove_dir(path, force = false) -> ()
[permalink][rdoc]ディレクトリ path を削除します。
remove_entry(path, force = false) -> ()
[permalink][rdoc]ファイル path を削除します。path がディレクトリなら再帰的に削除します。
このメソッドにはローカル脆弱性が存在します。 詳しくは FileUtils.#remove_entry_secure の項を参照してください。
例:
require 'fileutils' FileUtils.remove_entry '/tmp/ruby.tmp.08883'
[SEE_ALSO] FileUtils.#remove_entry_secure
remove_entry_secure(path, force = false) -> ()
[permalink][rdoc]ファイル path を削除します。path がディレクトリなら再帰的に削除します。
FileUtils.#rm_r および FileUtils.#remove_entry には TOCTTOU (time-of-check to time-of-use)脆弱性が存在します。 このメソッドはそれを防ぐために新設されました。 FileUtils.#rm_r および FileUtils.#remove_entry は以下の条件が 満たされるときにはセキュリティホールになりえます。
この脆弱性を防ぐため、remove_entry_secure は削除前に path 以下の ディレクトリのオーナーとパーミッションを変更し、上記の条件を回避します。 ただし remove_entry_secure は親ディレクトリが以下の条件を満たすことを 仮定しています。
この条件が満たされない場合 remove_entry_secure は安全ではありません。
remove_file(path, force = false) -> ()
[permalink][rdoc]ファイル path を削除します。
rm_f(list, options = {}) -> ()
[permalink][rdoc]safe_unlink(list, options = {}) -> ()
FileUtils.rm(list, :force => true) と同じです。
[SEE_ALSO] FileUtils.#rm
rm_r(list, options = {}) -> ()
[permalink][rdoc]ファイルまたはディレクトリ list を再帰的に消去します。
このメソッドにはローカル脆弱性が存在します。 この脆弱性を回避するには :secure オプションを使用してください。 詳しくは FileUtils.#remove_entry_secure の項を参照してください。
例:
require 'fileutils' FileUtils.rm_r(Dir.glob('/tmp/*')) FileUtils.rm_r(Dir.glob('/tmp/*'), :secure => true)
[SEE_ALSO] FileUtils.#rm, FileUtils.#remove_entry_secure
rm_rf(list, options = {}) -> ()
[permalink][rdoc]rmtree(list, options = {}) -> ()
ファイルまたはディレクトリ list を再帰的に消去します。
rm_r(list, {:force => true}) と同じです。
このメソッドにはローカル脆弱性が存在します。 この脆弱性を回避するには :secure オプションを使用してください。 詳しくは FileUtils.#remove_entry_secure の項を参照してください。
[SEE_ALSO] FileUtils.#rm, FileUtils.#rm_r, FileUtils.#remove_entry_secure
rmdir(dir, options = {}) -> ()
[permalink][rdoc]ディレクトリ dir を削除します。
ディレクトリにファイルが残っていた場合は削除に失敗します。
例:
require 'fileutils' FileUtils.rmdir('somedir') FileUtils.rmdir(%w(somedir anydir otherdir)) # 実際にはディレクトリの削除は行わずにメッセージ出力のみ FileUtils.rmdir('somedir', {:verbose => true, :noop => true})
touch(list, options = {}) -> ()
[permalink][rdoc]list で指定されたファイルの最終変更時刻 (mtime) と アクセス時刻 (atime) を変更します。
list で指定されたファイルが存在しない場合は空のファイルを作成します。
例:
require 'fileutils' FileUtils.touch('timestamp') FileUtils.touch('timestamp', :mtime => Time.now) FileUtils.touch(Dir.glob('*.c'))
uptodate?(newer, older_list, options = nil) -> bool
[permalink][rdoc]newer が、older_list に含まれるすべてのファイルより新しいとき真。 存在しないファイルは無限に古いとみなされます。
例:
require 'fileutils' FileUtils.uptodate?('hello.o', ['hello.c', 'hello.h']) or system('make')
METHODS -> Array
[permalink][rdoc]このモジュールで定義されている公開メソッドの配列を返します。
OPT_TABLE -> Hash
[permalink][rdoc]内部で使用します。