Comment obtenir les N dernières commandes de l'histoire?

37

Je veux voir quelles sont les dernières N commandes de mon history. Je pensais que history | tail -n 5cela marcherait, mais j'ai remarqué qu'une commande multiligne compte pour autant de lignes qu'elle a.

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

Ma question est donc la suivante: dois-je analyser le résultat de la commande pour accomplir cela?

Fedorqui
la source
1
//, C'est pourquoi j'aime stackexchange
Nathan Basanese

Réponses:

46

Je l'ai trouvé!

histoire [n]

Un argument de n ne répertorie que les n dernières lignes.

$ echo "hello
how are you"
$ history 2
1060  echo "hello
how are you"
1061  history 2
Fedorqui
la source
4
Cela semble être pour tcsh, yashet bash. Vous pouvez donner les informations correspondantes pour d' autres coquilles aiment zsh, fish, kshet la façon POSIX.
Stéphane Chazelas
1
J'aimerais bien, même si je n'ai aucun de ceux-ci installés sur mon ordinateur. Recommandez-vous une source spécifique pour obtenir les informations? En opengroup, je vois une référence à pubs.opengroup.org/onlinepubs/9699919799
fedorqui
6
fc -l -2fonctionne aussi (mais n'ajoute pas de courant fc -l -2à la sortie)
Evgeny Vereshchagin le
fcà propos montre les n dernières commandes avec -n. Afficher from n commands until lastest seulement n(ce qui n’a pas beaucoup de sens car il faut connaître le nombre total). En allemand, nous dirions ein kleiner aber feiner unterschied: Un petit mais délice diff. N'oubliez pas d'utiliser -lle caractère @EvgenyVereshchagin déjà car sinon, vous vous retrouvez dans un éditeur qui n'est pas ce que vous voulez.
Timo
0

Testé sous OpenBSD 6.3 (PD KSH v5.2.14 99/07 / 13.2).

history [b]

Affiche toute l'historique à partir d'une entrée avec un numéro [b]

history [b] [e]

Affiche l'intervalle de l'historique de [b] à [e]

CrimsonPermanentAssurer
la source
0

Vous pouvez également utiliser des nombres négatifs, tels que:

history -1

Ou utilisez une gamme (10 derniers):

history -1 -11 
Robertrv
la source
Cela ne fonctionne pas pour moi avec bash 5.0.11.
joelostblom
0

Lorsque vous appliquez l'historique, il affichera également la dernière commande d'historique. Pour éviter ce gaspillage d'espace, un tel alias pourrait être pratique:

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

(la commande elle-même history 16 | head -n 15)

Un autre alias d'histoire utile:

  alias hsg=' history | grep ' 

(lorsque ctr + r est trop petit pour être choisi)

L'espace devant _history lancera une commande non écrite dans l'historique

fc -l # listera également les 16 dernières commandes (et plus)

Alexey K.
la source
2
Bien que cela soit vrai, rien de tout cela n’adresse la question qui se pose.
Jeff Schaller