Como obter os últimos N comandos da história?

37

Eu quero ver quais são os últimos N comandos no meu history. Eu pensei history | tail -n 5que conseguiria, mas notei que um comando multilinha conta para tantas linhas quanto ele possui.

$ echo "hello
how are you"
$ history | tail -2
how are you"
1051  history | tail -2

Então, minha pergunta é: eu tenho que analisar a saída do comando para fazer isso?

fedorqui
fonte
11
//, É por isso que eu amo Stackexchange
Nathan Basanese

Respostas:

46

Eu encontrei!

história [n]

Um argumento de n lista apenas as últimas n linhas.

$ echo "hello
how are you"
$ history 2
1060  echo "hello
how are you"
1061  history 2
fedorqui
fonte
4
Isso parece ser para tcsh, yashe bash. Você pode querer dar a informação correspondente para outros escudos como zsh, fish, ksh, e da maneira POSIX.
Stéphane Chazelas
11
Eu adoraria, embora não tenha nenhum desses instalado no meu computador. Você recomenda alguma fonte específica para obter as informações? Em OpenGroup vejo uma referência a pubs.opengroup.org/onlinepubs/9699919799
fedorqui
6
fc -l -2trabalha também (mas não adiciona corrente fc -l -2de saída)
Evgeny Vereshchagin
fca propósito mostra os últimos n comandos com -n. A exibição from n commands until lasté apenas n(o que não faz muito sentido, porque você precisa saber o número total). Em alemão, diríamos ein kleiner aber feiner unterschied: Um pequeno, mas delicioso prazer. Não se esqueça de usar -lcomo o @EvgenyVereshchagin já apontou, caso contrário, você acaba em um editor que não é o que você deseja.
Timo
0

Testado no OpenBSD 6.3 (PD KSH v5.2.14 99/07 / 13.2).

history [b]

Mostra todo o histórico começando de uma entrada com um número [b]

history [b] [e]

Mostra o intervalo do histórico de [b] a [e]

CrimsonPermanentAssurer
fonte
0

Você também pode usar números negativos, como:

history -1

Ou use um intervalo (últimos 10):

history -1 -11 
robertrv
fonte
Não funciona para mim com o bash 5.0.11.
joelostblom 6/10
0

Quando você aplica o histórico, ele também mostra o comando do último histórico. Para impedir que o dissipador de espaço, esse alias possa ser útil:

alias hs=' history 16 | head -n 15'

(o próprio comando history 16 | head -n 15)

Outro alias histórico útil:

  alias hsg=' history | grep ' 

(quando ctr + R é muito pequeno para escolher)

O espaço na frente de _history executará um comando não escrito na história

fc -l # também listará 16 últimos comandos (e mais)

Alexey K.
fonte
2
Embora verdadeiro, nada disso aborda a questão em questão.
Jeff Schaller