วิธีการรับ N คำสั่งสุดท้ายจากประวัติ


37

historyผมต้องการที่จะเห็นสิ่งที่เป็นคำสั่งที่ไม่มีข้อความสุดท้ายในของฉัน ฉันคิดว่าhistory | tail -n 5จะทำ แต่ฉันสังเกตเห็นว่าคำสั่งหลายบรรทัดนับเป็นหลายบรรทัดตามที่มี

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

ดังนั้นคำถามของฉันคือฉันต้องแยกวิเคราะห์ผลลัพธ์ของคำสั่งเพื่อทำสิ่งนี้ให้สำเร็จหรือไม่?


1
// นี่คือเหตุผลที่ฉันรัก stackexchange
Nathan Basanese

คำตอบ:


46

เจอแล้ว!

ประวัติ [n]

อาร์กิวเมนต์ของ n แสดงรายการเฉพาะ n บรรทัดสุดท้าย

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

4
ที่ดูเหมือนว่าจะเป็นtcsh, และyash bashคุณอาจต้องการที่จะให้ข้อมูลที่สอดคล้องกันสำหรับเปลือกหอยอื่น ๆ เช่นzsh, fish, kshและวิธี POSIX
Stéphane Chazelas

1
ฉันชอบที่จะใช้แม้ว่าฉันจะไม่มีสิ่งเหล่านี้ติดตั้งในคอมพิวเตอร์ของฉันก็ตาม คุณแนะนำแหล่งข้อมูลเฉพาะเพื่อรับข้อมูลหรือไม่ ใน opengroup ฉันเห็นการอ้างอิงถึงpubs.opengroup.org/onlinepubs/9699919799
fedorqui

6
fc -l -2ทำงานด้วย (แต่ไม่ได้เพิ่มกระแสfc -l -2ไปยังเอาท์พุท)
Evgeny Vereshchagin


fcโดยแสดงให้เห็นถึงวิธีการสั่ง n -nที่ผ่านมากับ การแสดงfrom n commands until lastเป็นเพียงn(ซึ่งไม่สมเหตุสมผลเนื่องจากคุณต้องทราบจำนวนทั้งหมด) ในภาษาเยอรมันเราจะพูดว่าein kleiner aber feiner unterschied: ความแตกต่างเล็ก ๆ แต่ความสุขใจ อย่าลืมที่จะใช้-lเป็น @EvgenyVereshchagin ชี้ไปแล้วเพราะมิฉะนั้นคุณจะต้องลงเอยด้วยการแก้ไขซึ่งไม่ใช่สิ่งที่คุณต้องการ
Timo

0

ทดสอบใน OpenBSD 6.3 (PD KSH v5.2.14 99/07 / 13.2)

history [b]

แสดงประวัติทั้งหมดที่เริ่มต้นจากรายการที่มีตัวเลข [b]

history [b] [e]

แสดงช่วงเวลาประวัติตั้งแต่ [b] ถึง [e]


0

คุณสามารถใช้ตัวเลขติดลบเช่น:

history -1

หรือใช้ช่วง (10 ช่วงสุดท้าย):

history -1 -11 

ใช้งานไม่ได้กับฉันด้วย bash 5.0.11
joelostblom

0

เมื่อคุณใช้ประวัติมันจะแสดงคำสั่งประวัติครั้งสุดท้ายเช่นกัน เพื่อป้องกันไม่ให้พื้นที่ตัวแทนนามแฝงดังกล่าวมีประโยชน์:

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

(คำสั่งเองhistory 16 | head -n 15)

นามแฝงประวัติที่มีประโยชน์อื่น:

  alias hsg=' history | grep ' 

(เมื่อ ctr + R มีขนาดเล็กเกินไปให้เลือก)

ช่องว่างด้านหน้า _history จะรันคำสั่งที่ไม่ได้เขียนไว้ในประวัติ

fc -l # จะแสดงรายการคำสั่งสุดท้าย 16 รายการ (และอื่น ๆ )


2
ในขณะที่เป็นจริงไม่มีสิ่งนี้ตอบคำถามในมือ
Jeff Schaller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.