-
Notifications
You must be signed in to change notification settings - Fork 0
/
hist
executable file
·43 lines (35 loc) · 1.03 KB
/
hist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/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)