dict "$word"
}
+shell_activity_report() {
+ # TODO: optional concrete number output
+ # TODO: manual weekday calc (since forking date is so expensive)
+ # TODO: optional combinations of granularities: hour, weekday, month, year
+ history \
+ | awk '
+ {
+ # NOTE: $2 & $3 are specific to oh-my-zsh history output
+ date = $2
+ time = $3
+ d_fields = split(date, d, "-")
+ t_fields = split(time, t, ":")
+ if (t_fields && d_fields) {
+ # +0 to coerce number from string
+ month = d[2] + 0
+ hour = t[1] + 0
+ c = count[month, hour]++
+ }
+ if (c > max)
+ max = c
+ }
+
+ END {
+ m[ 1] = "January"
+ m[ 2] = "February"
+ m[ 3] = "March"
+ m[ 4] = "April"
+ m[ 5] = "May"
+ m[ 6] = "June"
+ m[ 7] = "July"
+ m[ 8] = "August"
+ m[ 9] = "September"
+ m[10] = "October"
+ m[11] = "November"
+ m[12] = "December"
+ for (month = 1; month <= 12; month++) {
+ printf "%s\n", m[month];
+ for (hour=0; hour<24; hour++) {
+ c = count[month, hour]
+ printf " %2d ", hour
+ for (i = 1; i <= (c * 100) / max; i++)
+ printf "|"
+ printf "\n"
+ }
+ }
+ }'
+}
+
+top_commands() {
+ history \
+ | awk '
+ {
+ count[$4]++
+ }
+
+ END {
+ for (cmd in count)
+ print count[cmd], cmd
+ }' \
+ | sort -n -r -k 1 \
+ | head -50 \
+ | awk '
+ {
+ cmd[NR] = $2
+ c = count[NR] = $1 + 0 # + 0 to coerce number from string
+ if (c > max)
+ max = c
+ }
+
+ END {
+ for (i = 1; i <= NR; i++) {
+ c = count[i]
+ printf "%s %d ", cmd[i], c
+ scaled = (c * 100) / max
+ for (j = 1; j <= scaled; j++)
+ printf "|"
+ printf "\n"
+ }
+ }' \
+ | column -t
+}
+
# Top Disk-Using directories
# TODO: Consider using numfmt instead of awk
tdu() {