43 lines
1 KiB
Ruby
Executable file
43 lines
1 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
# Project Name: None
|
|
# File / Folder: hist.rb
|
|
# File Language: ruby
|
|
# Copyright (C): 2006 heptadecagram
|
|
# First Author: heptadecagram
|
|
# First Created: 2006.03.13 20:14:58
|
|
# Last Modifier: sjs
|
|
# Last Modified: 2010.02.11
|
|
#
|
|
# now works w/ zsh and reports commands that account for at least 1% of the total
|
|
|
|
command = {}
|
|
execution = {}
|
|
$total = 0
|
|
|
|
IO.foreach('/Users/sjs/config/zsh/zhistory') do |line|
|
|
line.chomp! =~ /^:\s\d+:\d+;((\S+).*)$/
|
|
next if $1.nil? || $2.nil?
|
|
execution[$1] = 1 + execution[$1].to_i
|
|
command[$2] = 1 + command[$2].to_i
|
|
$total += 1
|
|
end
|
|
|
|
puts $total
|
|
|
|
execution = execution.select {|a,b| b.to_f / $total > 0.01}
|
|
command = command.select {|a,b| b.to_f / $total > 0.01}
|
|
|
|
Max_length = execution.sort_by {|a| a[0].length }.reverse[0][0].length
|
|
|
|
def print_hash(hash)
|
|
sorted = hash.sort {|a,b| b[1] <=> a[1] }
|
|
sorted.each do |cmd,value|
|
|
printf " %#{Max_length}s: %3d(%.2f%%)\n", cmd, value, value.to_f / $total
|
|
end
|
|
end
|
|
|
|
|
|
puts "Executions:\n"
|
|
print_hash(execution)
|
|
puts "Commands:\n"
|
|
print_hash(command)
|