Ruby 3.3 リファレンスマニュアル

module function FileUtils.#cp_lr

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 がディレクトリでない場合に発生します。
"mylib" ライブラリを site_ruby にインストールする例
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: true
内容をリンクする例
require 'fileutils'
# ディレクトリそのものではなく、ディレクトリの内容をリンクしたい場合は、
# 以下のようになります。(たとえば src/x -> dest/x, src/y -> dest/y)
FileUtils.cp_lr 'src/.', 'dest'
# FileUtils.cp_lr('src', 'dest') は dest ディレクトリが存在すれば dest/src を作成しますが、この例はしません。