วิธีรับช่วงประวัติ Bash เชลล์


9

ฉันจะรับ / กรองรายการประวัติในช่วงที่กำหนดได้อย่างไร

ฉันมีไฟล์ประวัติขนาดใหญ่และใช้บ่อย

history | grep somecommand

ตอนนี้ความทรงจำของฉันค่อนข้างแย่และฉันก็ต้องการที่จะเห็นสิ่งที่ฉันทำในช่วงเวลาที่ฉันป้อนคำสั่ง

สำหรับตอนนี้ฉันทำสิ่งนี้: จับคู่พูด4992 somecommandแล้วทำ

history | grep 49[0-9][0-9]

นี่มักจะดีพอ แต่ฉันอยากจะทำมากกว่านี้อย่างแม่นยำนั่นคือดูคำสั่งจาก 4972 ถึง 5012 นั่นคือ 20 คำสั่งก่อนหน้าและ 20 หลังจากนั้น

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


สำหรับการจัดการประวัติมี 2 บิวด์อิน: gnu.huihoo.org/bash-2.02/html_node/bashref_73.html
LAFK พูดว่า Reinstate Monica

คำตอบ:


13

คุณสามารถบอกgrepให้พิมพ์เส้นรอบ ๆ การแข่งขันเช่น 3 ก่อนและ 5 หลังจาก:

history | grep -B 3 -A 5 somecommand

grep -C 4grep -A 4 -B 4เทียบเท่ากับ

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

history | less +/somecommand

1
เคล็ดลับเด็ด ๆ ด้วยless! ไม่ทราบว่าคุณสามารถทำได้
วอร์เรน

เยี่ยมมาก ๆ ... ฉันเห็นคำสั่ง "รอบ ๆ " ที่ฉันกำลังมองหาแม้ว่าฉันจะไม่ได้มองหามันโดยเฉพาะ แต่ฉันจำได้ว่าใช้มันเมื่อฉันใช้คำสั่งอื่นที่เกี่ยวข้อง! สิ่งที่ดี tnx
Khalil Gharbaoui


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