是否有用于以符号表示法表示文件权限的ruby库(或内置函数)?

时间:2016-03-04 11:39:13

标签: ruby permissions

File::Stat#mode以十进制数字( 16832)返回文件权限。执行to_s(8)给出相应的八进制表示(40700)。

是否有任何用于以符号表示法(“drwx ------”)输出权限的内置方法或库,以及它们在ls -l中格式化的方式?

1 个答案:

答案 0 :(得分:1)

我认为自己很容易做到这一点。只需在数字和字符串表示之间创建一个映射,然后转换它:

permissions_map = {
  '7' => 'rwx',
  '6' => 'rw-',
  '5' => 'r-x',
  '4' => 'r--',
  '3' => '-wx',
  '2' => '-w-',
  '1' => '--x'
}

Dir.foreach('./') do |item|
  next if ['.', '..'].include?(item)
  f = File.stat(item)
  permission_string = ''
  sprintf('%o', f.mode)[-3..-1].chars.each do |digit|
    permission_string << permissions_map[digit]
  end
  puts permission_string
end