Existe uma maneira de dizer quantos comandos eu executei desde que eu ssh'd / logado, no bash? [duplicado]

1

Eu corro o comando history no bash mas ele me dá tudo ...

Percebi que posso limitar o número de comandos anteriores exibidos executando history | tail -n <num-of-lines+1> ; Então, há alguma maneira de ver apenas o que eu corri desde que eu fiz o login usando o número de comandos que eu executei desde que eu entrei no bash?

    
por leeand00 27.11.2018 / 21:57

4 respostas

4

Se você quiser apenas uma contagem geral sem detalhes, tente echo $LINENO .

O interpretador trata sua sessão como um fluxo, e conta as linhas que entram. Isso é basicamente quantas vezes você atingiu o retorno.

Se você digitar comandos multilinha, cada linha será contada separadamente.

    
por 27.11.2018 / 23:03
2

Interessante. Não há uma maneira interna, eu acredito, mas você pode definir um nova variável e incrementa-a após cada comando. Por exemplo:

$ count=0
$ PROMPT_COMMAND='count=$((count + 1))'
$ echo $count
1
$ echo command
command
$ echo another command
another command
$ echo $count
4

EDITAR :

Ou saber que o histórico é armazenado na memória até que a shell saia algo assim também faria o trabalho desde que você não o fez modificar o formato do histórico ou usar PROMPT_COMMAND para salvar o histórico depois cada comando:

diff <(history | sed -E 's,\s+?[0-9]+  ,,') ~/.bash_history
    
por 27.11.2018 / 22:13
0

Não há comando interno. Você pode enganar um pouco, mas o resultado depende da sua configuração. A coisa mais próxima que posso pensar é:

history | tail -n 'history | tail -n 1 | awk "{print \\-$HISTSIZE;}"'

Você pode alias.

O comando history enumera suas entradas. Na maior parte do tempo, seu $HISTFILE tem entradas máximas ( $HISTSIZE valor). Então você encontrará que comandos extras numerados acima de $HISTSIZE como lista de comandos digitados nesta sessão ssh.

Ele funciona exibindo o histórico com números, do que obtendo a última linha dele e a primeira coluna e subtraindo $HISTSIZE value, então sabemos quantos comandos foram depois do logon. Este parâmetro é enviado para tail -n, que mostra apenas o número de últimas entradas do histórico.

Infelizmente, não funciona corretamente quando há menos de $HISTSIZE de comandos no histórico. Para torná-lo melhor, você precisará fazer alguma configuração extra no seu arquivo .bashrc , então, sempre que você estiver efetuando login, será configurada uma variável extra que lembra o número de entradas no histórico. Em seguida, use essa variável em vez de $HISTSIZE

    
por 27.11.2018 / 22:27
0

Para uma contagem por sessão, eu usaria o HISTCMD. Ele rastreia todos os históricos salvos de bash, portanto, salve uma cópia do HISTCMD de entrada para esta instância do shell e subtraia-a.

Em ~.bashrc :

OHISTCMD=$HISTCMD

e, em seguida, sempre que você quiser saber a contagem,

echo $((HISTCMD - OHISTCMD - 1))

Observando no manual:

If HISTCMD is unset, it loses its special properties, even if it is subsequently reset.

e também que chamar comandos do histórico com a seta para cima não incrementa HISTCMD.

É uma pena que a variável global history_offset não está disponível externamente!

    
por 28.11.2018 / 00:31