Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | File | chown

概要

File.chown

詳細

ファイルの所有者とグループを変更します。
第一引数に所有者IDを表す数値。
第二引数にグループIDを表す数値。
第三引数以降に対象のファイル名を列挙します。
第一、二引数にnilか-1を設定すると変更されません。
戻り値は変更されたファイル数です。

サンプル

コード
# encoding: utf-8

def create_file(filename, contents)
  File.open(filename, 'w:utf-8') do |f|
    f.print contents
  end
end

def get_permission_file_name(filename)
  sample_info = `ls -ltra | grep #{filename}`
  ret = sample_info.gsub(/\s+/, "\s").split(' ').reverse
  "#{ret[0]}|#{ret[5]}|#{ret[6]}\n#{ret[9]}|#{ret[14]}|#{ret[15]}"
end

def print_header
  puts "filename|group|id"
end

filenames = ['sample1.txt', 'sample2.txt']
filenames.each do |filename|
  File.delete(filename) if File.exists?(filename)
  create_file filename, <<-EOS
内容1_1
内容1_2
内容1_3
  EOS
end
print_header
puts get_permission_file_name('sample')
change_count = File.chown(nil, 1003, 'sample1.txt', 'sample2.txt')
puts '----------------------------------'
print_header
puts get_permission_file_name('sample')
puts change_count
puts '----------------------------------'
print_header
change_count = File.chown(1000, -1, 'sample1.txt', 'sample2.txt')
puts get_permission_file_name('sample')
puts change_count
出力
filename|group|id
sample1.txt|root|root
sample2.txt|root|root
----------------------------------
filename|group|id
sample1.txt|git|root
sample2.txt|git|root
2
----------------------------------
filename|group|id
sample1.txt|git|vagrant
sample2.txt|git|vagrant
2