Posso obter a saída history
classificada na ordem dos mais usados?
Eu sei fazer isso em uma linguagem de programação, mas não no shell. No meu caso, estou no macOS com zsh.
Eu sei que poderia usar uniq
ande sort
algo para retirar o campo numérico inicial na history
saída. Mas isso seria apenas desduplicado e não levaria em conta a “frequência de duplicação”.
Isso é possível no shell ou devo recorrer a uma linguagem de programação?
Você pode remover o número inicial chamando passando
-n flag
parahistory
oufc
.Para classificar por frequência, use o
-c
sinalizadoruniq
e classifique novamente por esse valor.O trecho a seguir mostra seus 20 comandos usados com mais frequência. Remova a
sed
etapa se quiser manter a contagem de repetições. Remova atail
etapa se quiser a lista inteira.É claro que isso pressupõe que você não habilite opções como
hist_ignore_dups
, caso contrário as informações serão perdidas.Apenas bifurcando a ótima resposta de Giles para mostrar como ela pode ser estendida e usada na prática. Decidi, pelo meu caso de uso e pela minha preferência pessoal, usá-lo desta forma:
| grep git
- me permite ver apenas o subconjunto de comandos nos quais estou interessado. Aqui, comandos git.| sort -k1n | tail -n20
→| sort -k1nr | head -n20
- Prefiro ver os mais usados primeiro, então adicioneir
para reverter a classificação, o que exige olhar para ohead
em vez do arquivotail
.Posso então transformar isso em um novo comando usando
alias
assim:Neste caso, chamei o novo comando
most
.