Tarihten N komutları nasıl alınır?


37

İçimdeki son N komutunun ne olduğunu görmek istiyorum history. Bunu history | tail -n 5yapacağımı düşündüm , ama çok satırlı bir komutun sahip olduğu kadar çok satır için geçerli olduğunu fark ettim.

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

Öyleyse sorum şu: Bunu başarmak için komutun çıktısını çözümlemek zorunda mıyım?


1
//, işte bu yüzden
stackexchange'i

Yanıtlar:


46

Buldum!

tarih [n]

N argümanı sadece son n satırını listeler.

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

4
Yani için gibi görünüyor tcsh, yashve bash. Diğer kabuklar gibi için için gelen bilgi vermek isteyebilirsiniz zsh, fish, kshve POSIX yolu.
Stéphane Chazelas

1
Bunlardan hiçbiri bilgisayarımda yüklü olmasa da çok isterdim. Bilgiyi alabilmek için belirli bir kaynak önerir misiniz? Opengroup'ta pubs.opengroup.org/onlinepubs/9699919799
fedorqui

6
fc -l -2çok çalışır (ancak fc -l -2çıktıya akım eklemez )
Evgeny Vereshchagin


fcbu arada son n komutunu gösterir -n. Göstermek from n commands until lastsadece n(toplam sayıyı bilmeniz gerektiğinden anlamlı değildir). Almanca'da şunu söyleyebiliriz ein kleiner aber feiner unterschied: Küçük ama zevkli bir fark. -l@EvgenyVereshchagin'in işaret ettiği gibi kullanmayı unutma, çünkü aksi halde istediğin gibi olmayan bir editöre sahip olursun.
Timo

0

OpenBSD 6.3'de test edildi (PD KSH v5.2.14 99/07 / 13.2).

history [b]

[B] numaralı bir girişten başlayan tüm geçmişi gösterir

history [b] [e]

[B] ila [e] arasındaki tarih aralığını gösterir


0

Aşağıdaki gibi negatif sayıları da kullanabilirsiniz:

history -1

Veya bir aralık kullanın (son 10):

history -1 -11 

Benim için bash 5.0.11 ile çalışmıyor.
joelostblom

0

Geçmişi uyguladığınızda son geçmiş komutunu da gösterecektir. Bu uzay israfını önlemek için böyle bir takma ad kullanışlı olabilir:

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

(komutun kendisi history 16 | head -n 15)

Başka bir yararlı tarih takma adı:

  alias hsg=' history | grep ' 

(ctr + R seçilemeyecek kadar küçük olduğunda)

Tarihin önündeki boşluk, tarihte yazılmayan komutu çalıştırır.

fc -l #, 16 son komutu da listeleyecektir (ve dahası)


2
Doğru olsa da, bunların hiçbiri eldeki soruyu ele almıyor.
Jeff Schaller
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.