X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=2287d32ceffacaaed5496b36cc7761a5670a8a0e;hb=c17be636ca003e34172250a5f494f65b901fa27e;hp=47942dfc925393aef87a5a4e783c56056b9c8145;hpb=d8da04c5c3daa51482f91f933b384c9046491c04;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index 47942df..2287d32 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -1,3 +1,92 @@ +# + +d() { + local -r word=$(fzf < /usr/share/dict/words) + 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() {