要約
基本的なファイル操作を集めたモジュールです。
オプションの説明
各メソッドでキーワード引数として指定できるオプションの説明です。メソッドごとに指定できるキーワードは決まっています。未対応のキーワードを指定すると ArgumentError が発生します。
:noop-
真を指定すると実際の処理は行いません。
:preserve-
真を指定すると更新時刻と、可能なら所有ユーザ・所有グループもコピーします。
:verbose-
真を指定すると詳細を出力します。
:mode-
パーミッションを8進数で指定します。
:force-
真を指定すると作業中すべての StandardError を無視します。
:nocreate-
真を指定するとファイルを作成しません。
:dereference_root-
真を指定すると src についてだけシンボリックリンクの指す内容をコピーします。偽の場合はシンボリックリンク自体をコピーします。
:remove_destination-
真を指定するとコピーを実行する前にコピー先を削除します。
:secure-
真を指定するとファイルの削除に FileUtils?.remove_entry_secure を使用します。
:mtime-
時刻を Time か、起算時からの経過秒数を数値で指定します。
:parents-
真を指定すると指定したディレクトリの親ディレクトリも含めて削除します。
:owner-
ユーザー名か uid を指定すると所有ユーザを変更します。
:group-
グループ名か gid を指定すると所有グループを変更します。
目次
- 特異メソッド
- モジュール関数
-
- cd
- chdir
- chmod
- chmod_R
- chown
- chown_R
- cmp
- compare_file
- compare_stream
- copy
- copy_entry
- copy_file
- copy_stream
- cp
- cp_lr
- cp_r
- getwd
- identical?
- install
- link
- ln
- ln_s
- ln_sf
- ln_sr
- makedirs
- mkdir
- mkdir_p
- mkpath
- move
- mv
- pwd
- remove
- remove_dir
- remove_entry
- remove_entry_secure
- remove_file
- rm
- rm_f
- rm_r
- rm_rf
- rmdir
- rmtree
- safe_unlink
- symlink
- touch
- uptodate?
- 追加されるメソッド
- 定数
特異メソッド
collect_method(opt) -> Array[permalink][rdoc][edit]-
与えられたオプションを持つメソッド名の配列を返します。
- [PARAM]
opt: - オプション名をシンボルで指定します。
require 'fileutils' p FileUtils.collect_method(:preserve) # => ["cp", "cp_r", "copy", "install"] - [PARAM]
commands -> Array[permalink][rdoc][edit]-
何らかのオプションを持つメソッド名の配列を返します。
require 'fileutils' p FileUtils.commands # => ["chmod", "cp", "cp_r", "install", ...] have_option?(mid, opt) -> bool[permalink][rdoc][edit]-
mid というメソッドが opt というオプションを持つ場合、真を返します。そうでない場合は、偽を返します。
- [PARAM]
mid: - メソッド名を指定します。
- [PARAM]
opt: - オプション名を指定します。
- [PARAM]
options -> Array[permalink][rdoc][edit]-
オプション名の配列を返します。
require 'fileutils' p FileUtils.options # => ["noop", "verbose", "force", "mode", "parents", "owner", "group", "preserve", "dereference_root", "remove_destination", "secure", "mtime", "nocreate"] options_of(mid) -> Array[permalink][rdoc][edit]-
与えられたメソッド名で使用可能なオプション名の配列を返します。
- [PARAM]
mid: - メソッド名を指定します。
require 'fileutils' p FileUtils.options_of(:rm) # => ["noop", "verbose", "force"] - [PARAM]
モジュール関数
cd(dir, verbose: nil) -> 0[permalink][rdoc][edit]cd(dir, verbose: nil) {|dir| .... } -> objectchdir(dir, verbose: nil) -> 0chdir(dir, verbose: nil) {|dir| .... } -> object-
プロセスのカレントディレクトリを dir に変更します。
ブロックとともに呼び出された時はブロック終了後に元のディレクトリに戻ります。
- [PARAM]
dir: - ディレクトリを指定します。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
require 'fileutils' FileUtils.cd('/', verbose: true) # chdir and report it - [PARAM]
chmod(mode, list, noop: nil, verbose: nil) -> Array[permalink][rdoc][edit]-
ファイル list のパーミッションを mode に変更します。
- [PARAM]
mode: - パーミッションを8進数(absolute mode)か文字列(symbolic mode)で指定します。
- [PARAM]
list: - ファイルのリストを指定します。 対象のファイルが一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [RETURN]
- list を配列として返します。
# 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)。
- "a": 全て(所有者、グループ、その他)のユーザを指定するマスク
- "u": 所有者を指定するマスク
- "g": グループ(ファイルと同じグループに属しているが所有者ではない)を指定するマスク
- "o": その他(所有者でもなく、そのファイルと同じグループにも属していない)を指定するマスク
演算子。
- "+": 以降で指定した権限を追加
- "-" 以降で指定した権限を削除
- "=" 以降で指定した権限を指定
権限(複数指定可)。
- "w": 書き込み権限
- "r": 読み込み権限
- "x": 実行権限
- "s": 実行時にユーザー、あるいはグループ ID を設定
- "t": sticky ビット
- [PARAM]
chmod_R(mode, list, noop: nil, verbose: nil, force: nil) -> Array[permalink][rdoc][edit]-
ファイル list のパーミッションを再帰的に mode へ変更します。
- [PARAM]
mode: - パーミッションを8進数(absolute mode)か文字列(symbolic mode)で指定します(FileUtils?.chmod 参照)。
- [PARAM]
list: - ファイルのリストを指定します。対象のファイルが一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [PARAM]
force: - 真を指定すると処理中に発生した StandardError を無視します。
- [RETURN]
- list を配列として返します。
require 'fileutils' FileUtils.chmod_R(0700, '/tmp/removing') - [PARAM]
chown(user, group, list, noop: nil, verbose: nil) -> Array[permalink][rdoc][edit]-
ファイル list の所有ユーザと所有グループを user と group に変更します。
user, group に nil または -1 を渡すとその項目は変更しません。
- [PARAM]
user: - ユーザー名か uid を指定します。nil/-1 を指定すると変更しません。
- [PARAM]
group: - グループ名か gid を指定します。nil/-1 を指定すると変更しません。
- [PARAM]
list: - ファイルのリストを指定します。対象のファイルが一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [RETURN]
- list を配列として返します。
require 'fileutils' FileUtils.chown 'root', 'staff', '/usr/local/bin/ruby' FileUtils.chown nil, 'bin', Dir.glob('/usr/bin/*'), verbose: true - [PARAM]
chown_R(user, group, list, noop: nil, verbose: nil, force: nil) -> Array[permalink][rdoc][edit]-
list 以下のファイルの所有ユーザと所有グループを user と group へ再帰的に変更します。
user, group に nil または -1 を渡すとその項目は変更しません。
- [PARAM]
user: - ユーザー名か uid を指定します。nil/-1 を指定すると変更しません。
- [PARAM]
group: - グループ名か gid を指定します。nil/-1 を指定すると変更しません。
- [PARAM]
list: - ファイルのリストを指定します。対象のファイルが一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [PARAM]
force: - 真を指定すると処理中に発生した StandardError を無視します。
- [RETURN]
- list を配列として返します。
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 - [PARAM]
cmp(file_a, file_b) -> bool[permalink][rdoc][edit]compare_file(file_a, file_b) -> boolidentical?(file_a, file_b) -> bool-
ファイル file_a と file_b の内容が同じなら真を返します。
- [PARAM]
file_a: - ファイル名。
- [PARAM]
file_b: - ファイル名。
require 'fileutils' p FileUtils.cmp('somefile', 'somefile') #=> true p FileUtils.cmp('/dev/null', '/dev/urandom') #=> false - [PARAM]
compare_stream(io_a, io_b) -> bool[permalink][rdoc][edit]-
IO オブジェクト io_a と io_b の内容が同じなら真を返します。
- [PARAM]
io_a: - IO オブジェクト。
- [PARAM]
io_b: - IO オブジェクト。
- [PARAM]
cp(src, dest, preserve: nil, noop: nil, verbose: nil) -> ()[permalink][rdoc][edit]copy(src, dest, preserve: nil, noop: nil, verbose: nil) -> ()-
ファイル src を dest にコピーします。
src にファイルが一つだけ与えられた場合、 dest がディレクトリならdest/src にコピーします。 dest が既に存在ししかもディレクトリでないときは上書きします。
src にファイルが複数与えられた場合、 file1 を dest/file1 にコピー、file2 を dest/file2 にコピー、というように、ディレクトリ dest の中にファイル file1、file2、 …を同じ名前でコピーします。dest がディレクトリでない場合は例外 Errno::ENOTDIR が発生します。
- [PARAM]
src: - コピー元。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
dest: - コピー先のファイルかディレクトリです。
- [PARAM]
preserve: - 真を指定すると更新時刻と、可能なら所有ユーザ・所有グループもコピーします。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [EXCEPTION]
Errno::ENOTDIR: - src が複数のファイルかつ、dest がディレクトリでない場合に発生します。
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) - [PARAM]
copy_entry(src, dest, preserve = false, dereference_root = false) -> ()[permalink][rdoc][edit]-
ファイル src を dest にコピーします。
src が普通のファイルでない場合はその種別まで含めて完全にコピーします。 src がディレクトリの場合はその中身を再帰的にコピーします。
- [PARAM]
src: - コピー元。
- [PARAM]
dest: - コピー先。
- [PARAM]
preserve: - preserve が真のときは更新時刻と、可能なら所有ユーザ・所有グループもコピーします。
- [PARAM]
dereference_root: - dereference_root が真のときは src についてだけシンボリックリンクの指す内容をコピーします。偽の場合はシンボリックリンク自体をコピーします。
- [PARAM]
copy_file(src, dest, preserve = false, dereference_root = true) -> ()[permalink][rdoc][edit]-
ファイル src の内容を dest にコピーします。
- [PARAM]
src: - コピー元。
- [PARAM]
dest: - コピー先。
- [PARAM]
preserve: - preserve が真のときは更新時刻と、可能なら所有ユーザ・所有グループもコピーします。
- [PARAM]
dereference_root: - dereference_root が真のときは src についてだけシンボリックリンクの指す内容をコピーします。偽の場合はシンボリックリンク自体をコピーします。
- [PARAM]
copy_stream(src, dest) -> ()[permalink][rdoc][edit]-
src を dest にコピーします。 src には read メソッド、dest には write メソッドが必要です。
- [PARAM]
src: - read メソッドを持つオブジェクト。
- [PARAM]
dest: - write メソッドを持つオブジェクト。
- [PARAM]
cp_lr(src, dest, noop: nil, verbose: nil, dereference_root: true, remove_destination: false)Ruby 2.6.0 から[permalink][rdoc][edit]-
src へのハードリンク dest を作成します。 src がディレクトリの場合、再帰的にリンクします。 dest がディレクトリの場合、src へのハードリンク dest/src を作成します。
- [PARAM]
src: - リンク元。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
dest: - リンク作成先のファイルかディレクトリです。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [PARAM]
dereference_root: - 真を指定すると src についてだけシンボリックリンクの指す内容をコピーします。偽の場合はシンボリックリンク自体をコピーします。
- [PARAM]
remove_destination: - 真を指定するとコピーを実行する前にコピー先を削除します。
- [EXCEPTION]
ArgumentError: - dest が src に含まれる場合に発生します。
- [EXCEPTION]
Errno::EEXIST: - src が一つで dest がすでに存在しディレクトリでない場合に発生します。
- [EXCEPTION]
Errno::ENOTDIR: - src が複数で dest がディレクトリでない場合に発生します。
様々なファイルを対象ディレクトリにリンクする例require 'fileutils' FileUtils.rm_r site_ruby + '/mylib', force: true FileUtils.cp_lr 'lib/', site_ruby + '/mylib'
内容をリンクする例require 'fileutils' FileUtils.cp_lr %w(mail.rb field.rb debug/), site_ruby + '/tmail' FileUtils.cp_lr Dir.glob('*.rb'), '/home/aamine/lib/ruby', noop: true, verbose: truerequire 'fileutils' # ディレクトリそのものではなく、ディレクトリの内容をリンクしたい場合は、 # 以下のようになります。(たとえば src/x -> dest/x, src/y -> dest/y) FileUtils.cp_lr 'src/.', 'dest' # FileUtils.cp_lr('src', 'dest') は dest ディレクトリが存在すれば dest/src を作成しますが、この例はしません。 - [PARAM]
cp_r(src, dest, preserve: nil, noop: nil, verbose: nil, dereference_root: true, remove_destination: nil) -> ()[permalink][rdoc][edit]-
src を dest にコピーします。src がディレクトリであったら再帰的にコピーします。その際 dest がディレクトリなら dest/src にコピーします。
- [PARAM]
src: - コピー元。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
dest: - コピー先のファイルかディレクトリです。
- [PARAM]
preserve: - 真を指定すると更新時刻と、可能なら所有ユーザ・所有グループもコピーします。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [PARAM]
dereference_root: - 真を指定すると src についてだけシンボリックリンクの指す内容をコピーします。偽の場合はシンボリックリンク自体をコピーします。
- [PARAM]
remove_destination: - 真を指定するとコピーを実行する前にコピー先を削除します。
# 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) - [PARAM]
pwd -> String[permalink][rdoc][edit]getwd -> String-
プロセスのカレントディレクトリを文字列で返します。
install(src, dest, mode: nil, owner: nil, group: nil, preserve: nil, noop: nil, verbose: nil) -> ()[permalink][rdoc][edit]-
src と dest の内容が違うときだけ src を dest にコピーします。
- [PARAM]
src: - コピー元。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
dest: - コピー先のファイルかディレクトリです。
- [PARAM]
mode: - パーミッションを8進数(absolute mode)か文字列(symbolic mode)で指定します。symbolic mode の詳細は FileUtils?.chmod を参照してください。
- [PARAM]
owner: - ユーザー名か uid を指定すると所有ユーザを変更します。
- [PARAM]
group: - グループ名か gid を指定すると所有グループを変更します。
- [PARAM]
preserve: - 真を指定すると更新時刻と、可能なら所有ユーザ・所有グループもコピーします。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
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) - [PARAM]
ln(src, dest, force: nil, noop: nil, verbose: nil) -> ()[permalink][rdoc][edit]link(src, dest, force: nil, noop: nil, verbose: nil) -> ()-
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 が発生します。
- [PARAM]
src: - リンク元。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
dest: - リンク作成先のファイルかディレクトリです。
- [PARAM]
force: - 真を指定すると dest を上書きします。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [EXCEPTION]
Errno::EEXIST: - src が一つで dest がすでに存在しディレクトリでない場合に発生します。
- [EXCEPTION]
Errno::ENOTDIR: - src が複数で dest がディレクトリでない場合に発生します。
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') - [PARAM]
ln_s(src, dest, force: nil, relative: false, target_directory: true, noop: nil, verbose: nil) -> ()[permalink][rdoc][edit]symlink(src, dest, force: nil, relative: false, target_directory: true, noop: nil, verbose: nil) -> ()-
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 が発生します。
relative オプションを指定すると、dest からの相対パスによるシンボリックリンクを作成します。 FileUtils?.ln_sr を使うのと同じです。
- [PARAM]
src: - リンク元。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
dest: - リンク作成先のファイルかディレクトリです。
- [PARAM]
force: - 真を指定すると dest を上書きします。
- [PARAM]
relative: - 真を指定すると dest からの相対パスでシンボリックリンクを作成します。
- [PARAM]
target_directory: - dest をディレクトリとして扱うかどうかを指定します(真がデフォルトです)。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [EXCEPTION]
Errno::EEXIST: - src が一つで dest がすでに存在しディレクトリでない場合に発生します。
- [EXCEPTION]
Errno::ENOTDIR: - src が複数で dest がディレクトリでない場合に発生します。
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') - [PARAM]
ln_sf(src, dest, noop: nil, verbose: nil) -> ()[permalink][rdoc][edit]-
src へのシンボリックリンク dest を作成します。
ln_s(src, dest, force: true) と同じです。
- [PARAM]
src: - リンク元。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
dest: - リンク作成先のファイルかディレクトリです。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [EXCEPTION]
Errno::ENOTDIR: - src が複数で dest がディレクトリでない場合に発生します。
[SEE_ALSO] FileUtils?.ln_s
- [PARAM]
ln_sr(src, dest, target_directory: true, force: nil, noop: nil, verbose: nil) -> ()Ruby 3.2 から[permalink][rdoc][edit]-
src へのシンボリックリンク dest を、dest からの相対パスで作成します。 ln_s(src, dest, relative: true) と同じです。
src が一つの場合、 dest がすでに存在しディレクトリであるときは dest/src を作成します。 dest がすでに存在しディレクトリでないならば例外 Errno::EEXIST が発生します。ただし :force オプションを指定したときは dest を上書きします。
src が複数の場合、 src[0] へのシンボリックリンク dest/src[0]、src[1] へのシンボリックリンク dest/src[1] …を作成します。 dest がディレクトリでない場合は例外 Errno::ENOTDIR が発生します。
- [PARAM]
src: - リンク元。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
dest: - リンク作成先のファイルかディレクトリです。
- [PARAM]
target_directory: - dest をディレクトリとして扱うかどうかを指定します(真がデフォルトです)。
- [PARAM]
force: - 真を指定すると dest を上書きします。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [EXCEPTION]
Errno::EEXIST: - src が一つで dest がすでに存在しディレクトリでない場合に発生します。
- [EXCEPTION]
Errno::ENOTDIR: - src が複数で dest がディレクトリでない場合に発生します。
require 'fileutils' p FileUtils.ln_sr('/usr/local/src/ruby/ruby.c', '/usr/local/bin/ruby.c') # => /usr/local/bin/ruby.c は ../src/ruby/ruby.c へのシンボリックリンクになります。[SEE_ALSO] FileUtils?.ln_s
- [PARAM]
mkdir_p(list, mode: nil, noop: nil, verbose: nil) -> Array[permalink][rdoc][edit]mkpath(list, mode: nil, noop: nil, verbose: nil) -> Arraymakedirs(list, mode: nil, noop: nil, verbose: nil) -> Array-
ディレクトリ dir とその親ディレクトリを全て作成します。
例えば、
require 'fileutils' FileUtils.mkdir_p('/usr/local/bin/ruby')は以下の全ディレクトリを (なければ) 作成します。
- /usr
- /usr/local
- /usr/local/bin
- /usr/local/bin/ruby
- [PARAM]
list: - 作成するディレクトリ。一つの場合は文字列でも指定できます。二つ以上指定する場合は配列で指定します。
- [PARAM]
mode: - パーミッションを8進数で指定します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [RETURN]
- ディレクトリ名文字列の配列を返します。
mkdir(dir, mode: nil, noop: nil, verbose: nil) -> ()[permalink][rdoc][edit]-
ディレクトリ dir を作成します。
- [PARAM]
dir: - 作成するディレクトリ。
- [PARAM]
mode: - パーミッションを8進数で指定します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
require 'fileutils' FileUtils.mkdir('test') FileUtils.mkdir(%w( tmp data )) FileUtils.mkdir('notexist', noop: true) # does not create really - [PARAM]
mv(src, dest, force: nil, noop: nil, verbose: nil, secure: nil) -> ()[permalink][rdoc][edit]move(src, dest, force: nil, noop: nil, verbose: nil, secure: nil) -> ()-
ファイル src を dest に移動します。
src が一つの場合、 dest がすでに存在しディレクトリであるときは src を dest/src へ移動します。 dest がすでに存在しディレクトリでないときは src は dest を上書きします。
src が複数の場合、 src[0] を dest/src[0]、src[1] を dest/src[1] へ移動します。 dest がディレクトリでない場合は例外 Errno::ENOTDIR が発生します。
- [PARAM]
src: - 元のファイル。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
dest: - 移動先のファイル、またはディレクトリ。
- [PARAM]
force: - 真を指定すると処理中に発生した StandardError を無視します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [PARAM]
secure: - 真を指定するとファイルの削除に FileUtils?.remove_entry_secure を使用します。
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) - [PARAM]
rm(list, force: nil, noop: nil, verbose: nil) -> ()[permalink][rdoc][edit]remove(list, force: nil, noop: nil, verbose: nil) -> ()-
list で指定された対象を消去します。
- [PARAM]
list: - 削除する対象。一つの場合は文字列も指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
force: - 真を指定すると処理中に発生した StandardError を無視します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
require 'fileutils' FileUtils.rm('junk.txt') FileUtils.rm(Dir.glob('*~')) FileUtils.rm('NotExistFile', force: true) # never raises exception - [PARAM]
remove_dir(path, force = false) -> ()[permalink][rdoc][edit]-
ディレクトリ path を削除します。
- [PARAM]
path: - 削除するディレクトリ。
- [PARAM]
force: - 真のときは削除中に発生した StandardError を無視します。
- [PARAM]
remove_entry(path, force = false) -> ()[permalink][rdoc][edit]-
ファイル path を削除します。path がディレクトリなら再帰的に削除します。
このメソッドにはローカル脆弱性が存在します。詳しくは FileUtils?.remove_entry_secure の項を参照してください。
- [PARAM]
path: - 削除するパス。
- [PARAM]
force: - 真のときは削除中に発生した StandardError を無視します。
require 'fileutils' FileUtils.remove_entry '/tmp/ruby.tmp.08883'[SEE_ALSO] FileUtils?.remove_entry_secure
- [PARAM]
remove_entry_secure(path, force = false) -> ()[permalink][rdoc][edit]-
ファイル path を削除します。path がディレクトリなら再帰的に削除します。
FileUtils?.rm_r および FileUtils?.remove_entry には TOCTTOU (time-of-check to time-of-use)脆弱性が存在します。このメソッドはそれを防ぐために新設されました。 FileUtils?.rm_r および FileUtils?.remove_entry は以下の条件が満たされるときにはセキュリティホールになりえます。
- 親ディレクトリが全ユーザから書き込み可能 (/tmp を含む)
- path 以下のいずれかのディレクトリが全ユーザから書き込み可能
- システムがシンボリックリンクを持つ
この脆弱性を防ぐため、remove_entry_secure は削除前に path 以下のディレクトリのオーナーとパーミッションを変更し、上記の条件を回避します。ただし remove_entry_secure は親ディレクトリが以下の条件を満たすことを仮定しています。
- UNIX システムおよびそれに類する環境では、sticky ビットが立っていること。
- 全ユーザが書き込み可能であるのは、直接の親ディレクトリのみであること。 例えば、/var/tmp のパーミッションが 1777 であるのは問題ありませんが、 その場合 / や /var が全ユーザから書き込み可能であってはなりません。
この条件が満たされない場合 remove_entry_secure は安全ではありません。
- [PARAM]
path: - 削除するパス。
- [PARAM]
force: - 真のときは削除中に発生した StandardError を無視します。
remove_file(path, force = false) -> ()[permalink][rdoc][edit]-
ファイル path を削除します。
- [PARAM]
path: - 削除するファイル。
- [PARAM]
force: - 真のときは削除中に発生した StandardError を無視します。
- [PARAM]
rm_f(list, noop: nil, verbose: nil) -> ()[permalink][rdoc][edit]safe_unlink(list, noop: nil, verbose: nil) -> ()-
FileUtils.rm(list, force: true) と同じです。
- [PARAM]
list: - 削除する対象。一つの場合は文字列も指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
[SEE_ALSO] FileUtils?.rm
- [PARAM]
rm_r(list, force: nil, noop: nil, verbose: nil, secure: nil) -> ()[permalink][rdoc][edit]-
ファイルまたはディレクトリ list を再帰的に消去します。
- [PARAM]
list: - 削除する対象。一つの場合は文字列も指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
force: - 真を指定すると処理中に発生した StandardError を無視します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [PARAM]
secure: - 真を指定するとファイルの削除に FileUtils?.remove_entry_secure を使用します。
注意
このメソッドにはローカル脆弱性が存在します。この脆弱性を回避するには :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
- [PARAM]
rm_rf(list, noop: nil, verbose: nil, secure: nil) -> ()[permalink][rdoc][edit]rmtree(list, noop: nil, verbose: nil, secure: nil) -> ()-
ファイルまたはディレクトリ list を再帰的に消去します。
rm_r(list, force: true) と同じです。
- [PARAM]
list: - 削除する対象。一つの場合は文字列も指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [PARAM]
secure: - 真を指定するとファイルの削除に FileUtils?.remove_entry_secure を使用します。
注意
このメソッドにはローカル脆弱性が存在します。この脆弱性を回避するには :secure オプションを使用してください。詳しくは FileUtils?.remove_entry_secure の項を参照してください。
[SEE_ALSO] FileUtils?.rm, FileUtils?.rm_r, FileUtils?.remove_entry_secure
- [PARAM]
rmdir(dir, parents: nil, noop: nil, verbose: nil) -> ()[permalink][rdoc][edit]-
ディレクトリ dir を削除します。
ディレクトリにファイルが残っていた場合は削除に失敗します。
- [PARAM]
dir: - 削除するディレクトリを指定します。一つの場合は文字列でも指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
parents: - 真を指定すると指定したディレクトリの親ディレクトリも含めて削除します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
require 'fileutils' FileUtils.rmdir('somedir') FileUtils.rmdir(%w(somedir anydir otherdir)) # 実際にはディレクトリの削除は行わずにメッセージ出力のみ FileUtils.rmdir('somedir', verbose: true, noop: true) - [PARAM]
touch(list, noop: nil, verbose: nil, mtime: nil, nocreate: nil) -> ()[permalink][rdoc][edit]-
list で指定されたファイルの最終変更時刻 (mtime) とアクセス時刻 (atime) を変更します。
list で指定されたファイルが存在しない場合は空のファイルを作成します。
- [PARAM]
list: - 対象のファイル。一つの場合は文字列も指定可能です。二つ以上指定する場合は配列で指定します。
- [PARAM]
noop: - 真を指定すると実際の処理は行いません。
- [PARAM]
verbose: - 真を指定すると詳細を出力します。
- [PARAM]
mtime: - 時刻を Time か、起算時からの経過秒数を数値で指定します。
- [PARAM]
nocreate: - 真を指定するとファイルを作成しません。
require 'fileutils' FileUtils.touch('timestamp') FileUtils.touch('timestamp', mtime: Time.now) FileUtils.touch(Dir.glob('*.c')) - [PARAM]
uptodate?(newer, older_list) -> bool[permalink][rdoc][edit]-
newer が、older_list に含まれるすべてのファイルより新しいとき真。存在しないファイルは無限に古いとみなされます。
- [PARAM]
newer: - ファイルを一つ指定します。
- [PARAM]
older_list: - ファイル名の配列を指定します。
require 'fileutils' FileUtils.uptodate?('hello.o', ['hello.c', 'hello.h']) or system('make') - [PARAM]
追加されるメソッド
ruby(*args) {|result, status| ... }Ruby 1.9.3 から[permalink][rdoc][edit] [added by rake]-
与えられた引数で Ruby インタプリタを実行します。
- [PARAM]
args: - Ruby インタプリタに与える引数を指定します。
ruby %{-pe '$_.upcase!' <README}[SEE_ALSO] Kernel?.sh
- [PARAM]
safe_ln(*args)Ruby 1.9.3 から[permalink][rdoc][edit] [added by rake]-
安全にリンクを作成します。
リンクの作成に失敗した場合はファイルをコピーします。
- [PARAM]
args: - FileUtils?.cp, FileUtils?.ln に渡す引数を指定します。
[SEE_ALSO] FileUtils?.cp, FileUtils?.ln
- [PARAM]
sh(*cmd) {|result, status| ... }Ruby 1.9.3 から[permalink][rdoc][edit] [added by rake]-
与えられたコマンドを実行します。
与えられた引数が複数の場合、シェルを経由しないでコマンドを実行します。
- [PARAM]
cmd: - 引数の解釈に関しては Kernel?.exec を参照してください。
sh %{ls -ltr} sh 'ls', 'file with spaces' # check exit status after command runs sh %{grep pattern file} do |ok, res| if ! ok puts "pattern not found (status = #{res.exitstatus})" end end[SEE_ALSO] Kernel?.exec, Kernel?.system
- [PARAM]
split_all(path) -> ArrayRuby 1.9.3 から[permalink][rdoc][edit] [added by rake]-
与えられたパスをディレクトリごとに分割します。
- [PARAM]
path: - 分割するパスを指定します。
p split_all("a/b/c") # => ["a", "b", "c"] - [PARAM]
定数
METHODS -> Array[permalink][rdoc][edit]-
このモジュールで定義されている公開メソッドの配列を返します。
OPT_TABLE -> Hash[permalink][rdoc][edit]-
内部で使用します。