Acabo de ver esta publicación en http://linux.byexamples.com/
Básicamente, usa un script awk simple de una línea
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10
Una explicación completa se puede encontrar en el enlace de arriba.
Ejemplo de salida en mi máquina es:
1 211 21.1% ls
2 189 18.9% sudo
3 58 5.8% man
4 52 5.2% cd
5 43 4.3% ping
6 40 4% apropos
7 34 3.4% less
8 22 2.2% cat
9 18 1.8% which
10 18 1.8% aspell
awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n
El comando awk imprimirá la primera cadena de ~/.bash_history (sin mostrar opciones de comando ni argumentos), luego sort ordenará todas las líneas alfabéticamente, luego "uniq -c" eliminará las líneas duplicadas (sus comandos escritos) y las contará, y la última clasificación ordenará sus comandos por el número de conteo devuelto por uniq.
Puedes usar el hash
comando en su terminal, que mantiene una entrada hash de cada comando que usa junto con la cantidad de visitas y, en función de las visitas, puede clasificarlas y procesarlas.
Consulte este artículo para obtener más información.