uetennis’s diary

プログラミングについて学んだ事やライフハックについてかきます

lsコマンド# 17

今日やる事

  • lsコマンドの修正

勉強した事

require 'io/console' rows, columns = $stdout.winsize puts "Your screen is #{columns} wide and #{rows} tall"

  • ターミナルのサイズを [rows, columns] で返せる。
require 'io/console'
rows, columns = $stdout.winsize
puts "Your screen is #{columns} wide and #{rows} tall"

# (m・_・bp) 8:26 ~/Desktop/vsnote2.0/kadai/wc % ruby memo2.rb 
# Your screen is 175 wide and 9 tall
# (m・_・bp) 14:59 ~/Desktop/vsnote2.0/kadai/wc % ruby memo2.rb
# Your screen is 145 wide and 9 tall
# (m・_・bp) 14:59 ~/Desktop/vsnote2.0/kadai/wc % ruby memo2.rb
# Your screen is 171 wide and 9 tall
  • lsコマンドの課題でこれを反映させようと思うとたくさん変更しなきゃいけない箇所があるから悩みどころ。。

  • ハッシュ使った

  def types_of_files(stat)
    type_ary = []
    file_mode = stat.ftype
    file_type = {
      "file":"-",
      "directory":"d"
    }[file_mode.to_sym]
    type_ary << file_type
  end
stat = File::Stat.new($0)
stat = stat.mode.to_s(8)
a = {
  "7":"rwx",
  "6":"rw-",
  "5":"r-x",
  "4":"r--",
  "3":"-wx",
  "2":"-w-",
  "1":"--x",
  "0":"---",
}[stat[3].to_sym]
p stat
p a

# (m・_・bp) 16:33 ~/Desktop/vsnote2.0/kadai/wc % ruby memo.rb
# "100644"
# "rw-"
  • よし、これで3項演算子使わずにハッシュで動かせそうだ!

    注意

  • 下記のコードをlsコマンドの課題に当てはめても動きません。もし参考にされている方がいれば、注意してください〜
stat = File::Stat.new($0)
stat = stat.mode.to_s(8)
a = {
  "7":"rwx",
  "6":"rw-",
  "5":"r-x",
  "4":"r--",
  "3":"-wx",
  "2":"-w-",
  "1":"--x",
  "0":"---",
}
p stat
b =[]
p a[stat[3].to_sym]
p a[stat[4].to_sym]
p a[stat[5].to_sym]
b << a[stat[3].to_sym]
b << a[stat[4].to_sym]
b << a[stat[5].to_sym]
p b.join("")

# (m・_・bp) 16:45 ~/Desktop/vsnote2.0/kadai/wc % ruby memo.rb
# "100644"
# "rw-"
# "r--"
# "r--"
# "rw-r--r--"