End of Life Ruby 3.1 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
class method
FileUtils.ln
FileUtils.ln(target, link, force: nil, noop: nil, verbose: nil)
FileUtils.ln(target, dir, force: nil, noop: nil, verbose: nil)
FileUtils.ln(targets, dir, force: nil, noop: nil, verbose: nil)
lib/fileutils.rb
View on GitHub ↗
# File tmp/rubies/ruby-3.1.3/lib/fileutils.rb, line 296
def ln(src, dest, force: nil, noop: nil, verbose: nil)
fu_output_message "ln#{force ? ' -f' : ''} #{[src,dest].flatten.join ' '}" if verbose
return if noop
fu_each_src_dest0(src, dest) do |s,d|
remove_file d, true if force
File.link s, d
end
end
In the first form, creates a hard link link which points to target. If link already exists, raises Errno::EEXIST. But if the force option is set, overwrites link.
Example
FileUtils.ln 'gcc', 'cc', verbose: true FileUtils.ln '/usr/bin/emacs21', '/usr/bin/emacs'
In the second form, creates a link dir/target pointing to target. In the third form, creates several hard links in the directory dir, pointing to each item in targets. If dir is not a directory, raises Errno::ENOTDIR.
Example
FileUtils.cd '/sbin' FileUtils.ln %w(cp mv mkdir), '/bin' # Now /sbin/cp and /bin/cp are linked.