tl;dr

Para um shell Bash normal:

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

No caso da minha configuração do zsh:

$ cat ~/.history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $1}' | sort | uniq -c | sort -nr | head -n 5

As pessoas AMAM compartinhar top mais ouvidos ou top artistas mais ouvidos do spotify, mas aqui vou compartilhar os meus 20 comandos mais usados😍.

Como você verá a saída do aws+sort ele apenas conta a primeira parte do comando. Por exemplo, se você digita git status e git add -p significa que você vai ter uma linha para o git com duas execuções.

Bash

A saída padrão do comando history é algo como:

$ history
    1  git status
    2  git add -p
    3  nvim .gitignore
    4  ssh remoteserver
    5  git status

Se esse for o seu caso execute a seguinte linha:

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

A saída desse comando vai ser uma lista de comandos num ranking do mais executado para o menos:

    165 git
    136 exit
     20 ssh
     19 nvim
      7 ls

ZSH

A minha configuração do zsh é diferente, meu comando history não mostra todos os comandos, mas o arquivo ~/.history armazena todas as entradas.

Se o seu ~/.history for semelhante a esse:

$ head ~/.history
git status
git add -p
nvim .gitignore
ssh remoteserver
git status

Você pode usar essa versão do awk+sort:

$ cat $HISTFILE | awk 'BEGIN {FS="[ \t]+|\\|"} {print $1}' | sort | uniq -c | sort -nr | head -n 5

A saída vai ser similar a do Bash.

Meus top 20 ☺️

395 git
280 nvim
 81 ag
 67 ls
 66 mv
 63 find
 54 cat
 53 rm
 40 docker
 33 cp
 30 mkdir
 29 du
 26 tmux new
 22 youtube-dl
 19 docker-compose
 16 file
 15 less
 14 sudo
 11 which
 10 rmdir

Eu estou surpreso pelo fato de que no meu ranking eu tenho comandos como cp,mkdir e rmdir, que são comandos básicos de gerenciamento de arquivos que você pode fazer usando um filemanager (Thunar, Nautilus, Finder, …).

Comente abaixo quais são os seus top 20 comandos ☺️..