Bagaimana cara mendapatkan perintah N terakhir dari riwayat?

37

Saya ingin melihat apa saja perintah N terakhir di blog saya history. Saya pikir history | tail -n 5akan berhasil, tetapi saya perhatikan bahwa perintah multiline menghitung sebanyak garis yang dimilikinya.

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

Jadi pertanyaan saya adalah: apakah saya harus mengurai output dari perintah untuk mencapai ini?

fedorqui
sumber
1
//, Inilah sebabnya saya suka
stackexchange

Jawaban:

46

Aku menemukannya!

sejarah [n]

Argumen n hanya mencantumkan n baris terakhir.

$ echo "hello
how are you"
$ history 2
1060  echo "hello
how are you"
1061  history 2
fedorqui
sumber
4
Sepertinya itu untuk tcsh, yashdan bash. Anda mungkin ingin memberikan informasi yang sesuai untuk kerang lainnya seperti zsh, fish, ksh, dan cara POSIX.
Stéphane Chazelas
1
Saya ingin sekali, meskipun saya tidak memiliki semua ini diinstal di komputer saya. Apakah Anda merekomendasikan sumber spesifik untuk mendapatkan informasi? Dalam opengroup saya melihat referensi ke pubs.opengroup.org/onlinepubs/9699919799
fedorqui
6
fc -l -2berfungsi juga (tetapi tidak menambahkan arus fc -l -2ke output)
Evgeny Vereshchagin
fcdengan cara menunjukkan n perintah terakhir dengan -n. Menunjukkan from n commands until lasthanya n(yang tidak masuk akal karena Anda perlu tahu jumlah total). Dalam bahasa Jerman kita akan mengatakan ein kleiner aber feiner unterschied: Perbedaan kecil tapi menyenangkan. Jangan lupa untuk menggunakan yang -lsudah ditunjukkan oleh @EvgenyVereshchagin karena jika tidak, Anda akan berakhir dengan editor yang bukan yang Anda inginkan.
Timo
0

Diuji dalam OpenBSD 6.3 (PD KSH v5.2.14 99/07 / 13.2).

history [b]

Memperlihatkan semua riwayat yang dimulai dari entri dengan angka [b]

history [b] [e]

Memperlihatkan interval riwayat dari [b] ke [e]

CrimsonPermanentAssurer
sumber
0

Anda juga dapat menggunakan angka negatif, seperti:

history -1

Atau gunakan rentang (10 terakhir):

history -1 -11 
robertrv
sumber
Tidak bekerja untuk saya dengan bash 5.0.11.
joelostblom
0

Ketika Anda menerapkan histori itu akan menampilkan perintah histori terakhir juga. Untuk mencegah pembuang ruang alias itu bisa berguna:

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

(perintah itu sendiri history 16 | head -n 15)

Alias ​​riwayat lain yang bermanfaat:

  alias hsg=' history | grep ' 

(ketika ctr + R terlalu kecil untuk dipilih)

Ruang di depan _history akan menjalankan perintah yang tidak ditulis dalam sejarah

fc -l # juga akan mencantumkan 16 perintah terakhir (dan banyak lagi)

Alexey K.
sumber
2
Meskipun benar, tidak ada yang menjawab pertanyaan ini.
Jeff Schaller