パーミッション
勉強も兼ねてhttp://www.kuzuore.com/misc/dust/permissions/permissions_list.txtを出すようなのを作ってみる。
4096.times{|i| owr = (i % 01000 / 0100) & 0b100 # owner r oww = (i % 01000 / 0100) & 0b010 # owner w owx = (i % 01000 / 0100) & 0b001 # owner x grr = (i % 0100 / 010) & 0b100 # group r grw = (i % 0100 / 010) & 0b010 # group w grx = (i % 0100 / 010) & 0b001 # group x otr = (i % 010) & 0b100 # other r otw = (i % 010) & 0b010 # other w otx = (i % 010) & 0b001 # other x # non-stickey # print \ # "#{owr<1?'-':'r'}" + # "#{oww<1?'-':'w'}" + # "#{owx<1?'-':'x'}" + # "#{grr<1?'-':'r'}" + # "#{grw<1?'-':'w'}" + # "#{grx<1?'-':'x'}" + # "#{otr<1?'-':'r'}" + # "#{otw<1?'-':'w'}" + # "#{otx<1?'-':'x'}" + # "\n" # stickeys ots = (i / 01000) & 0b001 grs = (i / 01000) & 0b010 ows = (i / 01000) & 0b100 printf("%04o is -", i) print \ "#{owr<1?'-':'r'}" + "#{oww<1?'-':'w'}" + "#{owx<1?(ows<1?'-':'S'):(ows<1?'x':'s')}" + "#{grr<1?'-':'r'}" + "#{grw<1?'-':'w'}" + "#{grx<1?(grs<1?'-':'S'):(grs<1?'x':'s')}" + "#{otr<1?'-':'r'}" + "#{otw<1?'-':'w'}" + "#{otx<1?(ots<1?'-':'T'):(ots<1?'x':'t')}" + "\n" }
ずるして
r = ['-', 'r'] w = ['-', 'w'] x = ['-', 'x'] r.each{|i| w.each{|j| x.each{|k| r.each{|l| w.each{|m| x.each{|n| r.each{|o| w.each{|q| x.each{|u| printf"%s"*9+"\n", i,j,k,l,m,n,o,q,u } } } } } } } } }
みたいなやりかたの方が簡単かなと思ったけど、そうでもないらしい。確かめてないけど。
それはともかく、パーミッションは意味がややこしい。S とか T って意味ないように思える。
ディレクトリに対しては意味が違ってくる場合があるところとかも。