¿Cómo veo cuáles son mis comandos de Linux más utilizados?

¿Cómo veo cuáles son mis comandos de Linux más utilizados?

Me gustaría saber qué comando uso más en la línea de comando. Me gustaría saberlo para poder mejorar mi uso de la línea de comando. Si sé qué comando uso más, puedo leer más sobre ellos e intentar descubrir mejores formas de usarlos.

Sé que el historial mantiene una lista de todos los comandos anteriores que escribí. ¿Cómo lo procesaría para ver una lista de los 10 o 20 comandos más utilizados?

Respuesta1

Acabo de ver esta publicación enhttp://linux.byexamples.com/

Básicamente utilizas 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

Puede encontrar una explicación completa en el enlace de arriba.

Un 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

Respuesta2

awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n

El comando awk imprimirá la primera cadena de ~/.bash_history (sin mostrar opciones ni argumentos del comando), 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 según el número de conteo devuelto por uniq.

Respuesta3

Puede usar el hashcomando 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 ordenarlas y procesarlas.

ControlarEste artículopara más información.

Respuesta4

Los scripts en las otras respuestas solo cuentan el primer comando ejecutado en cada línea de comando; no incluyen comandos ejecutados después de las tuberías (es decir, ' | '). Por ejemplo, si esta línea estuviera en tu historial de bash:

awk '{print $1}' ~/.bash_history | sort | uniq -c | sort -n

luego, en el resumen devuelto de los comandos más ejecutados, 'sort' y 'uniq' y el segundo 'sort' no se incluirían, ya que no eran el primer token de la línea.

Basándose en la respuesta de nelaar, basta con dividir primero las líneas de su historial de bash en cada tubería:

sed 's/|/\n/g' ~/.bash_history | awk '{CMD[$1]++;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

información relacionada