¿Cómo puedo hacer una lista con los comandos más utilizados en el terminal?

¿Cómo puedo hacer una lista con los comandos más utilizados en el terminal?

Sé que esta pregunta puede ser inútil para cualquier propuesta futura de algunos de nosotros, pero incluso así, la lista puede ser útil cuando no recordamos un comando usado una vez o algunas veces en el pasado, cuando podemos buscar en el final de esta lista.

Usaremos los registros del archivo .bash_history para hacer esto. El siguiente comando le dará una lista de todos los comandos para que los use con más frecuencia:

 history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr 

Si desea solo los 10 primeros, debe agregar head al comando anterior:

 history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head 

Para obtener un top específico, por ejemplo, el top 5, use head con la opción -n 5 :

Top 5 comandos

Si desea la lista en orden inverso (parte superior con los comandos raramente utilizados), no use r oprion para la segunda sort :

 history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -n 

Y finalmente para obtener una lista con los comandos utilizados una vez, por ejemplo, use grep ' 1 ' (cambie 1 con el número deseado):

 history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | grep ' 1 ' 

Para lidiar con los comandos sudo (como sudo vim foo ), en lugar de solo {print $3} en el comando awk, use:

 {if($3 ~ /sudo/) print $4; else print $3} 

Entonces todo el comando se vería así:

 history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr 

Por ejemplo:

 $ history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head 284 vim 260 git 187 find 174 man 168 echo 149 rm 134 awk 115 pac 110 sudo 102 l $ history | awk 'BEGIN {FS="[ \t]+|\\|"} {if($3 ~ /sudo/) print $4; else print $3}' | sort | uniq -c | sort -nr | head 298 vim 260 git 189 find 174 man 168 echo 153 rm 134 awk 115 pac 102 l 95 cd 

Puedes ver el salto en cuentas para vim , rm , etc.

El siguiente comando también mostrará una lista de los top 10 comandos de terminal más utilizados,

 history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head 

Comando para enumerar todos los comandos que se usan con más frecuencia en el terminal,

 history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn 

Fish & Bash – La pregunta no especifica un shell específico, solo ‘terminal’. Cambia de cabeza al número que quieras.

Pescado

history | awk '{print $1}' | sort | uniq --count | sort --numeric-sort --reverse | head -10

 517 git 314 drush 197 sudo 171 cd 115 man 103 echo 95 vi 81 dig 67 set 66 ls 

Este Bash uno parece funcionar y es un poco más corto y fácil de entender que las otras respuestas. Me gustan las opciones largas para ayudar a la legibilidad en este tipo de ejemplos.

Intento

history | awk '{print $2}' | sort | uniq --count | sort --numeric-sort --reverse | head -10

 73 drush 72 exit 65 sudo 46 g 40 echo 35 ll 34 tmux 30 history 30 fish 27 mux