Je viens de voir ce post sur http://linux.byexamples.com/
En gros, vous utilisez un simple script awk d'une ligne
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
Une explication complète peut être trouvée sur le lien ci-dessus.
Exemple de sortie sur ma machine :
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
La commande awk imprimera la première chaîne de ~/.bash_history (ne montrant pas les options de commande ou les arguments), puis sort triera toutes les lignes par ordre alphabétique, puis "uniq -c" supprimera les lignes dupliquées (vos commandes tapées) et les comptera, et le dernier tri ordonnera vos commandes par le nombre de comptage renvoyé par uniq.
Vous pouvez utiliser le hash
commande dans votre terminal, qui conserve une entrée de hachage de chaque commande que vous utilisez avec le nombre de résultats et en fonction des résultats, vous pouvez les trier et les traiter.
Consultez cet article pour plus d'informations.