No UNIX, como encontrar os comandos mais usados ​​na história do unix?

8

No UNIX, como encontrar os comandos mais usados ​​na história?

Swetha
fonte
Eu acho que isso está fora do tópico aqui, mas o google mostra várias boas listas para referência. Obviamente, o uso varia de acordo com a distribuição e disponibilidade dos comandos, bem como pelo usuário, seu objetivo e seu conhecimento de outros comandos, mas certamente há alguns que flutuam para o topo e aparecem em todas as listas sobre o assunto.
Caleb
7
Você quer dizer "arquivo de histórico de comandos do shell" ou "histórico do Unix"?
alex

Respostas:

11

Depende do que você pretende com 'comando'. De uma perspectiva de um comando é simplesmente um executável chamado a partir da linha de comando, portanto, lse ls -alh /tmp/foo/bar/*tar.bzsão ambos o comando ls. Outra perspectiva é que um comando é a soma de suas partes, significando que o exemplo acima é de 2 comandos distintos.

Se sua intenção é contar comandos totalmente únicos na história, você pode executar: history | cut -d' ' -f4- | uniq -c | sort -n

Por favor, esteja ciente de que isso foi testado em um sistema Debian, a sintaxe de saída do seu comando history pode variar um pouco. Ajuste o número '4' no comando para selecionar colunas alternativas.

Se você deseja considerar apenas o primeiro comando sem argumentos, poderá executar: history | cut -d' ' -f4- | cut -d' ' -f1 | uniq -c | sort -n

Para incluir os argumentos, mas nenhum comando encadeado ou canalizado a seguir, você pode executar: history | cut -d ' ' -f4- | cut -d'|' -f1 | uniq -c | sort -n

Observe que cada um desses tipos classifica o número de comandos numericamente com a frequência mais alta exibida por último.

Tok
fonte
Eu precisava para adicionar um adicional sortantes uniqde obter uma contagem precisa, uma vez que apenas verifica linhas adjacentes:history | cut -d' ' -f4- | cut -d' ' -f1 | sort | uniq -c | sort -n
nocash
4

Vi respostas vucar e tok , elas são muito úteis, mas você também pode usar a ferramenta incrível awk:

se você deseja listar os comandos que você usa com mais frequência:

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

para encontrar o comando mais usado:

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

para mim foi vi:

94 vi
Nidal
fonte
4

Outra abordagem seria usar a contabilidade de processo BSD , que também está disponível no Linux (embora eu não saiba se está ativada por padrão). Ele basicamente mantém uma guia de todos os programas executados (e algumas outras medidas, como tempo de CPU consumido etc.) enquanto a contabilidade estiver ativa. A partir daí, algumas estatísticas agregadas estão disponíveis, entre outras: tipo de lista de todos os programas já executados no sistema, classificados por etc. número principal de usos.

Os comandos a serem procurados são lastcommpara o log de execução e saas estatísticas agregadas. Voltando à pergunta original, supondo que o sistema em questão tivesse a contabilidade ativada desde a instalação, sa -nforneceria uma lista de todos os comandos já executados no sistema (para todos os usuários), classificados por frequência. Para os oleodutos, cada parte do oleoduto seria contada separadamente, pois cada parte compreende um novo processo a ser bifurcado.

Para mais detalhes, a revista Linux possui um artigo explicando o funcionamento. Eu mesmo recebi a idéia do guia NetBSD ; muitas das dicas de administração mais genéricas não são específicas para o NetBSD, mas também se aplicam a outros sistemas Unix.

Vucar Timnärakrul
fonte
2

Os 20 comandos CLI mais utilizados:

history |  cut -c7- | sort  | uniq -c | sort -nr | head -n 20
Adrian
fonte
1

Você pode usar um único comando de corte:

history | cut -c 7-100  | sort  | uniq -c | sort -nr
user78124
fonte
1

Se for apenas para a sessão atual, hashsem argumentos.

PSkocik
fonte