fileutils.rb

Copyright (c) 2000,2001 Minero Aoki <aamine@loveruby.net>

This program is free software.
You can distribute/modify this program under the terms of
the Ruby License.

module FileUtils

基本的なファイル操作を集めたモジュールです。モジュールの 別名として FileUtils::Normal も用意されています。

モジュール関数

FileUtils#cd( dir )
FileUtils#cd( dir ) {|dir| .... }
ディレクトリ dir に移動します。
イテレータとして呼ばれた時はブロック終了後に
元のディレクトリに戻ります。
FileUtils#pwd
FileUtils#getwd
カレントディレクトリの名前を返します。
Dir.pwd と同じです。
FileUtils#newest?( newer, older1, older2, ... )
FileUtils#uptodate?( newer, older1, older2, ... )
newer が全ての older より新しいとき真。
存在しないファイルは無限に古いとみなされます。

  FileUtils.newest? 'hello.o', 'hello.c', 'hello.h' or system 'make'
FileUtils#oldest?( older, newer1, newer2, ... )
older が全ての newer より古いとき真。
存在しないファイルは無限に古いとみなされます。

  FileUtils.oldest? ''
FileUtils#mkdir( dir1, dir2, ... )
ディレクトリ dir1、dir2 …を作成します。

  FileUtils.mkdir 'test'
  FileUtils.mkdir 'script', 'text'
FileUtils#mkdir_p( dir1, dir2, ... )
ディレクトリ dir1, dir2 …とその親ディレクトリを全て作成します。
例えば

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

は以下の全ディレクトリを(なければ)作成します。
    * /usr
    * /usr/local
    * /usr/local/bin
    * /usr/local/bin/ruby
FileUtils#ln( old, new )
old へのハードリンク new を作成します。
new がディレクトリなら new/old を作成します。
FileUtils#ln( file1, file2 ..., dir )
file1 へのハードリンク dir/file1、file2 へのハードリンク dir/file2 …
を作成します。

  FileUtils.ln '
FileUtils#ln_s( old, new )
old へのシンボリックリンク new を作成します。

  File.ln_s 'somefile', 'link_to_somefile'
FileUtils#ln_s( file1, file2 ..., dir )
file1、file2 …へのシンボリックリンク dir/file1, dir/file2 …を
作成します。dir がディレクトリでない場合は例外 Errno::ENOTDIR が
発生します。
FileUtils#cp( src, dest )
ファイル src を dest にコピーします。dest がディレクトリなら
dest/src にコピーします。

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

  File.cp 'cgi.rb', 'complex.rb', 'date.rb', '/usr/lib/ruby/1.6'
FileUtils#cp_r( src, dest )
src を dest にコピーします。src がディレクトリであったら再帰的に
コピーを行います。その際 dest がディレクトリなら dest/src に
コピーします。

  # installing package "mylib" under the site_ruby
  FileUtils.cp_r 'lib/', site_ruby + '/mylib'
FileUtils#cp_r( file1, file2 ..., dir )
file1、file2 …をディレクトリ dir の中にコピーします。
file がディレクトリなら再帰的にコピーします。

  FileUtils.cp_r 'mail.rb', 'field.rb', 'debug/', site_ruby + '/tmail'
FileUtils#mv( src, dest )
from を to に移動します。to がディレクトリなら to/from に
移動します。三つ以上の引数を与えたときはディレクトリ dir の
中にその他のファイルを移動します。

  FileUtils.mv 'badname.rb', 'goodname.rb'
FileUtils#mv( file1, file2 ..., dir )
file1 file2 …を dir/file1 dir/file2 …に移動します。
パーティションをまたいで移動するときはコピーします。

  FileUtils.mv 'junk.rb', 'dust.rb', '.trash/'
FileUtils#rm( file1, file2, ... )
file1、file2 …を消去します。

  FileUtils.rm '/usr/bin/perl'   # :-)
FileUtils#rm_f( file1, file2, ... )
file1、file2 …を消去します。途中でエラーが起きても無視します。

  FileUtils.rm_f 'junk.rb', 'dust.rb'
  FileUtils.rm_f Dir['*.so'], Dir['*.o']   # nested array is OK.
  FileUtils.rm_f 'NotExistFile'            # no error
FileUtils#rm_rf( file1, file2, ... )
ファイルまたはディレクトリ file1, file2 …を消去します。
途中でエラーが起きても無視します。

  FileUtils.rm_rf '/home'  # if you want to destroy the world
FileUtils#cmp( a, b )
FileUtils#identical?( a, b )
ファイル a と b の内容が同じなら真。

  FileUtils.cmp 'somefile', 'somefile'  #=> true
  FileUtils.cmp '/bin/cp', '/bin/mv'    #=> maybe false.
FileUtils#install( src, dest, mode = <from's> )
from と to の内容が違うときだけ from を to にコピーします。
そのさいモードを mode に設定します。

  FileUtils.install 'ruby', '/usr/local/bin/ruby', 0755
  FileUtils.install 'lib.rb', '/usr/local/lib/ruby/site_ruby'
FileUtils#chmod( mode, file1, file2, ... )
file1 file2 …のモードを mode に変えます。
mode は八進数を使って chmod 0644, fname のように与えます。

  FileUtils.chmod 0644 'my.rb', 'your.rb'
  FileUtils.chmod 0755 'goodcmd'

module FileUtils::Verbose

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

メソッド

---- fileutils_op ---- fileutils_op=( operator )

メソッドを転送するオブジェクトです。
デフォルトは FileUtils::Normal です。

---- fileutils_output ---- fileutils_output=( out )

メッセージを出力するオブジェクトです。
out は puts を持っていなければいけません。
デフォルトは stderr です。

---- fileutils_label ---- fileutils_label=( str )

メッセージの最初につくラベルです。

module FileUtils::NoWrite

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