Method: FileUtils.ln_s

Defined in:
lib/fileutils.rb

.ln_s(src, dest, force: nil, noop: nil, verbose: nil) ⇒ Object

:call-seq:

FileUtils.ln_s(target, link, force: nil, noop: nil, verbose: nil)
FileUtils.ln_s(target,  dir, force: nil, noop: nil, verbose: nil)
FileUtils.ln_s(targets, dir, force: nil, noop: nil, verbose: nil)

In the first form, creates a symbolic link link which points to target. If link already exists, raises Errno::EEXIST. But if the :force option is set, overwrites link.

FileUtils.ln_s '/usr/bin/ruby', '/usr/local/bin/ruby'
FileUtils.ln_s 'verylongsourcefilename.c', 'c', force: true

In the second form, creates a link dir/target pointing to target. In the third form, creates several symbolic links in the directory dir, pointing to each item in targets. If dir is not a directory, raises Errno::ENOTDIR.

FileUtils.ln_s Dir.glob('/bin/*.rb'), '/home/foo/bin'


316
317
318
319
320
321
322
323
# File 'lib/fileutils.rb', line 316

def ln_s(src, dest, force: nil, noop: nil, verbose: nil)
  fu_output_message "ln -s#{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.symlink s, d
  end
end