bash-it/plugins/available/history.plugin.bash

46 lines
1.5 KiB
Bash

# shellcheck shell=bash
about-plugin 'improve history handling with sane defaults'
# Append the history list to the file named by the value of the HISTFILE
# variable when the shell exits, rather than overwriting the file.
shopt -s histappend
# 'ignorespace': don't save command lines which begin with a space to history
# 'erasedups' (alternative 'ignoredups'): don't save duplicates to history
# 'autoshare': automatically share history between multiple running shells
: "${HISTCONTROL:=ignorespace:erasedups:autoshare}"
# resize history to 100x the default (500)
: "${HISTSIZE:=50000}"
function top-history()
{
############ STACK_TRACE_BUILDER #####################
Function_Name="${FUNCNAME[0]}"
Function_PATH="${Function_PATH}/${Function_Name}"
######################################################
about 'print the name and count of the most commonly run tools'
# - Make sure formatting doesn't interfer with our parsing
# - Use awk to count how many times the first command on each line has been called
# - Truncate to 10 lines
# - Print in column format
HISTTIMEFORMAT='' history \
| awk '{
a[$2]++
}END{
for(i in a)
printf("%s\t%s\n", a[i], i)
}' \
| sort --reverse --numeric-sort \
| head \
| column \
--table \
--table-columns 'Command Count,Command Name' \
--output-separator ' | '
############### Stack_TRACE_BUILDER ################
Function_PATH="$( dirname ${Function_PATH} )"
####################################################
}