Je voudrais savoir quelle commande j'utilise le plus sur la ligne de commande. Je voudrais savoir afin que je puisse améliorer mon utilisation de la ligne de commande. Si je connais la commande que j'utilise le plus, je peux en lire plus à leur sujet et essayer de trouver de meilleurs moyens de les utiliser.
Je sais que l'historique conserve une liste de toutes les commandes précédentes que j'ai tapées. Comment pourrais-je le traiter pour voir une liste des 10 ou 20 commandes les plus utilisées?
linux
command-line
history
Nelaaro
la source
la source
Réponses:
Je viens de voir ce post sur http://linux.byexamples.com/
Fondamentalement, vous utilisez un simple script awk d'une ligne
Une explication complète peut être trouvée sur le lien ci-dessus.
Exemple de mise hors tension sur ma machine:
la source
La commande awk imprimera la première chaîne de ~ / .bash_history (sans afficher les options ni les arguments de la commande), puis sort ordonnera toutes les lignes par ordre alphabétique, puis "uniq -c" supprimera les lignes dupliquées (vos commandes saisies) et les comptera, puis le dernier tri ordonnera vos commandes en fonction du nombre compté renvoyé par uniq.
la source
-r
à la fin de la commande pour les trier dans l'ordre inverse et| head -10
limiter le nombre de résultats.Vous pouvez utiliser la
hash
commande de votre terminal, qui conserve une entrée de hachage pour chaque commande que vous utilisez, ainsi que le nombre de hits et en fonction des hits, que vous pouvez trier et traiter.Consultez cet article pour plus d'informations.
la source
Pour une réponse plus générale, activez " comptabiliser les processus " sur votre système. Vous pouvez obtenir non seulement la fréquence d'utilisation, mais aussi des statistiques agrégées sur le processeur, la mémoire et les E / S.
la source
Les scripts des autres réponses ne comptent que la première commande exécutée dans chaque ligne de commande; ils n'incluent pas les commandes exécutées après les tubes (c'est-à-dire '|'). Par exemple, si cette ligne elle-même était dans votre historique bash:
puis, dans le résumé renvoyé des commandes les plus exécutées, "sort" et "uniq" et le deuxième "sort" ne seraient pas inclus, car ils n'étaient pas le premier jeton de la ligne.
En vous basant sur la réponse de nelaar, il suffit de scinder d’abord les lignes de votre historique bash sur chaque pipe:
la source
Un ajout amusant serait un diagramme à barres des comptes:
Sortie:
Les commandes longues compenseront l'espacement.
la source
printf
ousprintf
au lieu deprint
.Utilisez
$ 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
pour obtenir une liste de vos 10 commandes les plus courantes.Exemple:
la source
Vous pouvez
awk
transformer la réponse ci-dessus de @nelaar en un joli script bash:la source
Il s’agit bien d’une version modifiée de la commande "Неделчо Христов" copiée et collée ici .... si vous avez sécurisé ou daté votre historique de bash, vous obtiendrez une sortie erronée.
Cela vous fera mieux d'utiliser ceci:
la source