Me gustaría saber qué comando uso más en la línea de comandos. Me gustaría saber para poder mejorar el uso de la línea de comandos. Si sé qué comando utilizo con mayor frecuencia, puedo leer más sobre ellos y tratar de encontrar mejores formas de usarlos.
Sé que la historia 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?
linux
command-line
history
nelaaro
fuente
fuente
Respuestas:
Acabo de ver este post en http://linux.byexamples.com/
Básicamente se usa un script awk de una sola línea.
Una explicación completa se puede encontrar en el enlace de arriba.
Ejemplo de fuera puesto en mi máquina es:
fuente
El comando awk imprimirá la primera cadena desde ~ / .bash_history (no muestra opciones de comando o argumentos), luego la ordenación ordenará todas las líneas alfabéticamente, luego "uniq -c" eliminará las líneas duplicadas (sus comandos escritos) y las contará, y la última ordenación ordenará sus comandos por el número de conteo devuelto por uniq.
fuente
-r
al final del comando para ordenarlos en el orden inverso y| head -10
Para limitar el número de resultados.Puedes usar el
hash
comando en su terminal, que mantiene una entrada de hash de cada comando que usa junto con el número de visitas y en función de las visitas que puede ordenar y procesar.Comprobar Este artículo para más información.
fuente
Para una respuesta más general, habilitar " proceso de contabilidad "en su sistema. Puede obtener no solo la frecuencia de uso, sino también estadísticas agregadas de CPU, memoria y E / S.
fuente
Una adición divertida sería un gráfico de barras de los conteos:
Salida:
Los comandos largos compensarán el espaciado.
fuente
printf
osprintf
en lugar deprint
.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 tuberías (es decir, '|'). Por ejemplo, si esta línea en sí estaba en tu historial de bash:
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 en la línea.
Sobre la base de la respuesta de Nelaar, basta con dividir primero las líneas en su historial de bash en cada canal:
fuente
Utilizar
$ 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
para obtener una lista de sus 10 mejores comandos.Ejemplo:
fuente
Puedes hacer lo anterior
awk
Conteste desde @nelaar en un buen script de bash:fuente
Bueno, esta es una versión modificada del comando "Неделчо Христов" copiado y pegado aquí ... si ha asegurado o estampado la fecha en su historial de bash, tendrá una salida con fallas.
Esto te hará mejor usando esto:
fuente