简单点的话你可以认为 FileUtils 的作用就是为了用来在 Ruby 脚本中执行一些常规的 Linux 命令。
可能需要先:
require 'fileutils'
FileUtils.cd(dir)
[1] pry(main)> Dir.pwd
=> "/root/workspace/ruby_learning"
[2] pry(main)> FileUtils.cd "../"
=> 0
[3] pry(main)> Dir.pwd
=> "/root/workspace"
FileUtils.pwd()
[6] pry(main)> FileUtils.pwd()
=> "/root/workspace"
FileUtils.mkdir("test_dir")
[11] pry(main)> `ls`.split
=> ["foo.txt", "hello.rb", "test.rb", "test.txt"]
[12] pry(main)> FileUtils.mkdir("test_dir")
=> ["test_dir"]
[13] pry(main)> `ls`.split
=> ["foo.txt", "hello.rb", "test_dir", "test.rb", "test.txt"]
FileUtils.mkdir(["test1", "test2"])
[18] pry(main)> FileUtils.mkdir(["test1", "test2"])
=> ["test1", "test2"]
FileUtils.mkdir_p("test/test_dir")
[16] pry(main)> FileUtils.mkdir("test/test_dir")
Errno::ENOENT: No such file or directory @ dir_s_mkdir - test/test_dir
from /usr/local/ruby-2.7.1/lib/ruby/2.7.0/fileutils.rb:250:in `mkdir'
[17] pry(main)> FileUtils.mkdir_p("test/test_dir")
=> ["test/test_dir"]
FileUtils.mkdir_p(["test/test_dir1", "test/test_dir2"])
[21] pry(main)> FileUtils.mkdir_p(["test/test_dir1", "test/test_dir2"])
=> ["test/test_dir1", "test/test_dir2"]
FileUtils.rmdir("test1")
[20] pry(main)> FileUtils.rmdir("test1")
=> ["test1"]
FileUtils.rm_r("test")
[22] pry(main)> FileUtils.rmdir("test")
Errno::ENOTEMPTY: Directory not empty @ dir_s_rmdir - test
from /usr/local/ruby-2.7.1/lib/ruby/2.7.0/fileutils.rb:268:in `rmdir'
[24] pry(main)> FileUtils.rm_r("test")
=> ["test"]
FileUtils.ln('test.rb', 'test.rb.bak')
[25] pry(main)> FileUtils.ln('test.rb', 'test.rb.bak')
=> 0
FileUtils.ln_s('test.rb', 'test.rb.link')
[28] pry(main)> FileUtils.ln_s('test.rb', 'test.rb.link')
=> 0
FileUtils.cp('test.rb', './test_dir')
[29] pry(main)> FileUtils.cp('test.rb', './test_dir')
=> nil
FileUtils.cp_r('./test_dir', './test')
[39] pry(main)> FileUtils.cp_r('./test_dir', './test')
=> nil
FileUtils.mv('hello.rb', 'world.rb')
[40] pry(main)> FileUtils.mv('hello.rb', 'world.rb')
=> 0
FileUtils.rm('foo.txt')
[41] pry(main)> FileUtils.rm('foo.txt')
=> ["foo.txt"]
[42] pry(main)> FileUtils.rm(['/root/test.txt', '/root/test2.txt'])
=> ["/root/test.txt", "/root/test2.txt"]
FileUtils.rm_r('test_dir')
[43] pry(main)> FileUtils.rm_r('test_dir')
=> ["test_dir"]
FileUtils.rm_rf('test')
[44] pry(main)> FileUtils.rm_rf('test')
=> ["test"]
FileUtils.chmod(644, 'world.rb')
[45] pry(main)> FileUtils.chmod(644, 'world.rb')
=> ["world.rb"]
FileUtils.touch('new.rb')
[46] pry(main)> FileUtils.touch('new.rb')
=> ["new.rb"]
FileUtils.chown("looking", "looking", "new.rb")
[47] pry(main)> FileUtils.chown("looking", "looking", "new.rb")
=> ["new.rb"]