Come ottenere gli ultimi N comandi dalla cronologia?


37

Voglio vedere quali sono gli ultimi N comandi nel mio history. Ho pensato di history | tail -n 5farcela, ma ho notato che un comando multilinea conta per tutte le righe che ha.

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

Quindi la mia domanda è: devo analizzare l'output del comando per ottenere questo risultato?


1
//, Ecco perché amo stackexchange
Nathan Basanese

Risposte:


46

L'ho trovato!

storia [n]

Un argomento di n elenca solo le ultime n righe.

$ echo "hello
how are you"
$ history 2
1060  echo "hello
how are you"
1061  history 2

4
Questo sembra essere per tcsh, yashe bash. Si consiglia di dare le informazioni corrispondenti per altre shell piace zsh, fish, ksh, e il modo in POSIX.
Stéphane Chazelas,

1
Mi piacerebbe, anche se non ho installato nessuno di questi sul mio computer. Raccomandi una fonte specifica da cui ottenere le informazioni? Nell'opengroup vedo un riferimento a pubs.opengroup.org/onlinepubs/9699919799
fedorqui

6
fc -l -2funziona anche (ma non aggiunge corrente fc -l -2all'output)
Evgeny Vereshchagin


fca proposito mostra gli ultimi n comandi con -n. Mostrare from n commands until lastè solo n(il che non ha molto senso perché devi conoscere il numero totale). In tedesco diremmo ein kleiner aber feiner unterschied: un piccolo ma delizioso diff. Non dimenticare di usare -lcome già indicato @EvgenyVereshchagin perché altrimenti finirai in un editor che non è quello che vuoi.
Timo

0

Testato in OpenBSD 6.3 (PD KSH v5.2.14 99/07 / 13.2).

history [b]

Mostra tutta la cronologia a partire da una voce con un numero [b]

history [b] [e]

Mostra l'intervallo cronologico da [b] a [e]


0

Puoi anche usare numeri negativi, come:

history -1

Oppure usa un intervallo (ultimi 10):

history -1 -11 

Non funziona con me con bash 5.0.11.
Joelostblom,

0

Quando si applica la cronologia, verrà visualizzato anche il comando dell'ultima cronologia. Per evitare che il disastro spaziale tale alias possa essere utile:

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

(il comando stesso history 16 | head -n 15)

Un altro alias storico utile:

  alias hsg=' history | grep ' 

(quando ctr + R è troppo piccolo per scegliere)

Lo spazio davanti a _history eseguirà un comando non scritto nella storia

fc -l # elencherà anche 16 ultimi comandi (e altro)


2
Sebbene sia vero, nulla di tutto questo affronta la domanda attuale.
Jeff Schaller
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.