Como posso fazer uma lista com os comandos mais usados no terminal?

13

Como posso fazer uma lista com os comandos mais usados no terminal?

Eu sei que esta pergunta pode ser inútil para quaisquer propostas futuras para alguns de nós, mas mesmo assim, a lista pode ser útil quando não nos lembramos de um comando usado uma vez ou algumas vezes no passado, quando podemos pesquise no final desta lista.

    
por Radu Rădeanu 25.06.2013 / 10:11

3 respostas

20

Usaremos os registros do arquivo .bash_history para fazer isso. O próximo comando fornecerá uma lista de todos os comandos para que você os use com mais frequência:

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

Se você quer apenas o top 10, você deve adicionar head no comando acima:

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

Para obter um top específico, por exemplo, o top 5, use head com -n 5 option:

Sevocêquiseralistaemordeminversa(superiorcomoscomandosraramenteusados),nãouseroprionparaosegundosort:

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

E, finalmente, para obter uma lista com os comandos usados uma vez, por exemplo, use grep ' 1 ' (altere 1 com o número desejado):

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

Para lidar com os comandos sudo (como sudo vim foo ), em vez de apenas {print $3} no comando awk, use:

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

Assim, todo o comando ficaria assim:

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

Por exemplo:

$ 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

Você pode ver o salto nas contagens de vim , rm , etc.

    
por Radu Rădeanu 25.06.2013 / 10:11
3

Abaixo, o comando também listará os comandos do terminal top 10 mais freqüentemente usados,

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

Comando para listar todos os comandos mais usados no terminal,

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn
    
por Avinash Raj 19.11.2013 / 05:32
1

Fish & amp; Bash - A questão não especifica um shell específico, apenas 'terminal'. Mude de cabeça para o número que quiser.

Fish

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 parece funcionar e é um pouco mais curto e mais fácil de entender do que as outras respostas. Eu gosto das longas opções para ajudar a legibilidade nesses tipos de exemplos.

Bash

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
    
por Elijah Lynn 06.01.2016 / 14:18