add a script to dump most common commands from zhistory
This commit is contained in:
parent
a7c1887eb8
commit
64c756fe16
1 changed files with 43 additions and 0 deletions
43
hist
Executable file
43
hist
Executable file
|
|
@ -0,0 +1,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)
|
||||||
Loading…
Reference in a new issue