ดูประวัติทุบตีที่หลากหลาย


30

historyรายการคำสั่งออกทั้งหมดประวัติศาสตร์สำหรับเซสชันปัจจุบัน ชอบ:

1 ls 
2 cd /root
3 mkdir something
4 cd something
5 touch afile
6 ls
7 cd ..
8 rm something/afile
9 cd ..
10 ls
11 history

เพื่อที่จะค้นหารายการที่น่าสนใจฉันสามารถท่อhistoryด้วยgrepเช่น

history | grep ls
1 ls
6 ls
10 ls

ฉันยังสามารถดู 3 คำสั่งสุดท้ายเช่น:

history 3
11 history
12 history | grep ls
13 history 3

แต่ฉันจะหาช่วงของประวัติศาสตร์ที่เฉพาะเจาะจงได้อย่างไร ตัวอย่างเช่น:

history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..

คุณสามารถแสดงรายการสุดท้ายคำสั่งแล้วท่อx head
Bratchley

@Bratchley: เพื่อที่ฉันจะต้องรู้จำนวนคำสั่งสุดท้ายที่จะไป พิจารณาสิ่งนี้history | grep somethingแสดงผลลัพธ์ของคำสั่งที่มีหมายเลข123 234 345ในประวัติศาสตร์และฉันอาจไม่ทราบจำนวนคำสั่งสุดท้ายที่ดำเนินการ ( historyในกรณีนี้) คำสั่งสุดท้ายของฉันอาจมีหมายเลข 400, 500 หรืออะไรก็ได้ ดังนั้นก่อนอื่นฉันต้องตรวจสอบหมายเลขนั้น, xhead
หาความ

คำตอบ:


52

แทนที่จะhistoryคุณสามารถใช้fcซึ่งจะช่วยให้คุณเลือกช่วง:

fc -l 4 7

4
fc -l -16 -10มันยังยอมรับตัวเลขติดลบนับจากปลายเช่น
Franklin Yu

อืมแปลกใจว่าทำไมเราต้องมีคำสั่งใหม่แทนของการขัดแย้งเพียงเพื่อให้คำสั่งที่เกิดขึ้นจริง ...
ริงโก้

10

หากคุณต้องใช้คำสั่ง history ให้ไพพ์คำสั่งผ่าน sed หรือ awk:

history | sed -n '10,20p'

history | awk 'NR >= 10 && NR <= 20'

มิฉะนั้นคำตอบของ cuonglm ก็เป็นทางเลือกที่ดีกว่า


6
เนื่องจากเราเข้าสู่ทางเลือกที่ไม่ดีการผสมผสานheadและtailจะแก้ปัญหานี้ในแบบที่สง่างามน้อยลง สำหรับช่วง 10-> 25 history | head 25 | tail 15คุณจะต้องใช้
แอรอน

1

การใช้ประวัติด้วยgrep บนหมายเลขบรรทัดรอบคำสั่งที่ฉันกำลังมองหาทำงานได้ดีที่สุดสำหรับฉัน

ตัวอย่างเช่นฉันกำลังมองหาสิ่งที่ฉันทำประมาณping mybox20 บรรทัดขึ้นไป

$ history | grep "ping mybox" 20325 ping mybox

นั่นคือบรรทัด20325ดังนั้นฉันต้อง grep บรรทัดที่เริ่มต้นด้วยตัวเลขใน[20320..20339]ช่วง

$ history | grep ^203[2-3][0-9]


(1) คุณพูดว่า "มากกว่าหรือน้อยกว่า 20" แต่ตัวอย่างของคุณแสดง −5 และ +14 (2) สิ่งนี้ไม่ได้ผลสำหรับฉันเพราะหมายเลขประวัติดูเหมือนว่ามีช่องว่างนำหน้า
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.