fileutils.rb

ruby 1.7 feature

module FileUtils

基本的なファイル操作を集めたモジュールです。

モジュール関数

FileUtils.cd( dir, *options )
FileUtils.cd( dir, *options ) {|dir| .... }
Options: noop verbose

ディレクトリ dir に移動します。
イテレータとして呼ばれた時はブロック終了後に
元のディレクトリに戻ります。

  FileUtils.cd '/', :verbose   # chdir and report it
FileUtils.uptodate?( newer, older_list, *options )
Options: verbose

newer が、older_list に含まれるすべてのファイルより新しいとき真。
存在しないファイルは無限に古いとみなされます。

  FileUtils.newest? 'hello.o', 'hello.c', 'hello.h' or system 'make'
FileUtils.mkdir( dir, *options )
Options: noop verbose

ディレクトリ dir を作成します。

  FileUtils.mkdir 'test'
  FileUtils.mkdir %w( tmp data )
  FileUtils.mkdir 'notexist', :noop  # does not create really
FileUtils.mkdir_p( dir, *options )
Options: noop verbose

ディレクトリ dir とその親ディレクトリを全て作成します。
例えば

  FileUtils.mkdir_p '/usr/local/lib/ruby'

は以下の全ディレクトリを(なければ)作成します。
    * /usr
    * /usr/local
    * /usr/local/bin
    * /usr/local/bin/ruby
FileUtils.rmdir( dir, *options )
Options: noop, verbose

removes directory DIR.

  FileUtils.rmdir 'somedir'
  FileUtils.rmdir %w(somedir anydir otherdir)
  # does not remove directory really, outputing message.
  FileUtils.rmdir 'somedir', :verbose, :noop
FileUtils.ln( old, new, *options )
Options: force noop verbose

old へのハードリンク new を作成します。
new がすでに存在しディレクトリであるときは new/old を作成します。
new がすでに存在しディレクトリでないならば例外 Errno::ENOTDIR が発生します。
ただし force オプションを指定したときは new を上書きします。

  FileUtils.ln 'gcc', 'cc', :verbose
  FileUtils.ln '/usr/bin/emacs21', '/usr/bin/emacs'
FileUtils.ln( list, destdir, *options )
Options: force noop verbose

list[0] へのハードリンク destdir/list[0]、list[1] への
ハードリンク destdir/list[1] …を作成します。
destdir がディレクトリでない場合は例外 Errno::ENOTDIR が発生します。

  include FileUtils
  cd '/bin'
  ln %w(cp mv mkdir), '/usr/bin'
FileUtils.ln_s( old, new, *options )
Options: force noop verbose

old へのシンボリックリンク new を作成します。
new がすでに存在しディレクトリであるときは new/old を作成します。
new がすでに存在しディレクトリでないならば例外 Errno::ENOTDIR が発生します。
ただし force オプションを指定したときは new を上書きします。

  FileUtils.ln_s '/usr/bin/ruby', '/usr/local/bin/ruby'
  FileUtils.ln_s 'verylongsourcefilename.c', 'c', :force
FileUtils.ln_s( list, destdir, *options )
Options: force noop verbose

list[0]、list[1] …へのシンボリックリンク dir/list[0], dir/list[1] …を
作成します。destdir がディレクトリでない場合は例外 Errno::ENOTDIR が
発生します。
list[0] へのシンボリックリンク destdir/list[0]、list[1] への
ハードリンク destdir/list[1] …を作成します。
destdir がディレクトリでない場合は例外 Errno::ENOTDIR が発生します。

 FileUtils.ln_s Dir.glob('bin/*.rb'), '/home/aamine/bin'
FileUtils.ln_sf( src, dest, *options )
Options: noop verbose

ln_s(src,dest,:force) と同じです。
FileUtils.cp( src, dest, *options )
Options: preserve noop verbose

ファイル src を dest にコピーします。dest がディレクトリなら
dest/src にコピーします。dest が既に存在ししかもディレクトリで
ないときは上書きします。

  FileUtils.cp 'eval.c', 'eval.c.org'
FileUtils.cp( list, dir, *options )
Options: preserve noop verbose

file1 を dir/file1 にコピー、file2 を dir/file2 にコピー、
というように、ディレクトリ dir の中にファイル file1、file2 …を
同じ名前でコピーします。dir がディレクトリでない場合は例外
Errno::ENOTDIR が発生します。

  FileUtils.cp 'cgi.rb', 'complex.rb', 'date.rb', '/usr/lib/ruby/1.6'
  FileUtils.cp :verbose, %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
FileUtils.cp_r( src, dest, *options )
Options: preserve noop verbose

src を dest にコピーします。src がディレクトリであったら再帰的に
コピーを行います。その際 dest がディレクトリなら dest/src に
コピーします。

  # installing ruby library "mylib" under the site_ruby
  FileUtils.rm_r site_ruby + '/mylib', :force
  FileUtils.cp_r 'lib/', site_ruby + '/mylib'
FileUtils.cp_r( list, dir, *options )
Options: preserve noop verbose

list[0]、list[1], list[2], …をディレクトリ dir の中にコピーします。
list[n] がディレクトリなら再帰的にコピーします。

  FileUtils.cp_r %w(mail.rb field.rb debug/) site_ruby + '/tmail'
  FileUtils.cp_r Dir.glob('*.rb'), '/home/aamine/lib/ruby', :noop, :verbose
FileUtils.mv( src, dest, *options )
Options: noop verbose

from を to に移動します。to がディレクトリなら to/from に
移動します。三つ以上の引数を与えたときはディレクトリ dir の
中にその他のファイルを移動します。

  FileUtils.mv 'badname.rb', 'goodname.rb'
  FileUtils.mv 'stuff.rb', 'lib/ruby', :force
FileUtils.mv( list, dir, *options )
Options: noop verbose

file1 file2 …を dir/file1 dir/file2 …に移動します。
パーティションをまたいで移動するときはコピーします。

  FileUtils.mv 'junk.txt', 'dust.txt', '/home/aamine/.trash/'
  FileUtils.mv Dir.glob('test*.rb'), 'T', :noop, :verbose
FileUtils.rm( list, *options )
Options: force noop verbose

list[0]、list[1] …を消去します。:force オプションが
セットされた場合は作業中すべての StandardError を無視します。

  FileUtils.rm %w( junk.txt dust.txt )
  FileUtils.rm Dir['*.so']
  FileUtils.rm 'NotExistFile', :force    # never raises exception
FileUtils.rm_r( list, *options )
Options: force noop verbose

ファイルまたはディレクトリ list[0], list[1] …を消去します。
force オプションを渡した場合 StandardError を無視します。

  FileUtils.rm_r Dir.glob('/tmp/*')
  FileUtils.rm_r '/', :force          #  :-)
FileUtils.rm_rf( list, *options )
Options: noop verbose

same to rm_r(list,:force)
FileUtils.cmp( file_a, file_b, *options )
Options: verbose

ファイル a と b の内容が同じなら真。

  FileUtils.cmp 'somefile', 'somefile'  #=> true
  FileUtils.cmp '/bin/cp', '/bin/mv'    #=> maybe false.
FileUtils.install( src, dest, mode = <src's>, *options )
Options: noop verbose

from と to の内容が違うときだけ from を to にコピーします。
そのさいモードを mode に設定します。

  FileUtils.install 'ruby', '/usr/local/bin/ruby', 0755, :verbose
  FileUtils.install 'lib.rb', '/usr/local/lib/ruby/site_ruby', :verbose
FileUtils.chmod( mode, list, *options )
Options: noop verbose

ファイル LIST[0]、LIST[1] …のパーミッションを mode に変えます。

  FileUtils.chmod 0644, 'my.rb', 'your.rb'
  FileUtils.chmod 0755, 'somecommand'
  FileUtils.chmod 0755, '/usr/bin/ruby', :verbose
FileUtils.touch( list, *options )
Options: noop verbose

list[0], list[1] …の最終変更時刻 (mtime) とアクセス時刻 (atime) を
更新します。list[n] が存在しない場合は空のファイルを作成します。

  FileUtils.touch 'timestamp'
  FileUtils.touch Dir.glob('*.c');  system 'make'

module FileUtils::Verbose

FileUtils と同じメソッドが定義されており全く同じ 動作をしますが、実行前にしようとしていることを表示します。

module FileUtils::NoWrite

FileUtils と同じメソッドが定義されていますが、 実際にファイルを変更する操作は実行しません。