suggest_aliases.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bold=$(tput bold) | |
reset=$(tput sgr0) | |
purple=$(tput setaf 171) | |
green=$(tput setaf 76) | |
tan=$(tput setaf 3) | |
header() { | |
printf "\n${bold}${purple}========== %s ==========${reset}\n" "$@" | |
} | |
arrow() { | |
printf " ➜ %s\n" "$@" | |
} | |
success() { | |
printf "${green} ✔ %s${reset}\n" "$@" | |
} | |
warning() { | |
printf "${tan} ➜ %s${reset}\n" "$@" | |
} | |
function top_commands_full() { | |
local filter="$1" | |
local max_results=${2:-'50'} | |
history | \cat | awk '{$1=$1};1' | sed 's/^[0-9\* TAB]*//g' | awk '{CMD[$0]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "%\t" a; }' | grep "$filter" | sort -nr | nl | head "-n$max_results" | |
} | |
function suggest_aliases() { | |
local search_input_size=${1:-'50'} | |
header "alias recommendations" | |
while read -r line; do | |
local matching_aliases=$(alias | grep -i "$line") | |
if [ ! -z "$matching_aliases" ]; then | |
success "there is an alias for $line :" | |
while read -r alias_line; do | |
arrow "$alias_line" | |
done < <(echo "$matching_aliases") | |
echo | |
else | |
warning "no alias for $line" | |
fi | |
done < <(top_commands_full "" "$search_input_size" | awk '{ $1=""; $2=""; $3=""; print}' | awk 'NF' | awk '{$1=$1};1' | awk -v COUNT=1 'NF>COUNT' | head "-$search_input_size") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment