ยกตัวอย่างเช่นในทุบตีฉันสามารถพิมพ์ซึ่งจะเรียกใช้คำสั่งสุดท้ายที่ผมเริ่มต้นด้วยการพิมพ์!xyz
xyz
ฉันจะเรียกใช้คำสั่งสุดท้ายที่ฉันพิมพ์ขึ้นต้นด้วยxyz
แต่ไม่ดำเนินการได้อย่างไร
เช่นเพื่อให้ฉันสามารถเปลี่ยนพารามิเตอร์ก่อนที่จะดำเนินการ ....
ยกตัวอย่างเช่นในทุบตีฉันสามารถพิมพ์ซึ่งจะเรียกใช้คำสั่งสุดท้ายที่ผมเริ่มต้นด้วยการพิมพ์!xyz
xyz
ฉันจะเรียกใช้คำสั่งสุดท้ายที่ฉันพิมพ์ขึ้นต้นด้วยxyz
แต่ไม่ดำเนินการได้อย่างไร
เช่นเพื่อให้ฉันสามารถเปลี่ยนพารามิเตอร์ก่อนที่จะดำเนินการ ....
คำตอบ:
คุณสามารถทำเช่นนี้ในคำสั่งกดพรอมต์Ctrl+ แล้วพิมพ์คำสั่งที่คุณต้องการที่จะเรียกคืนในกรณีของคุณr xyz
นี่จะแสดงคำสั่งทั้งหมดให้คุณโดยไม่ต้องดำเนินการใด ๆ
ลอง!xyz:p
; มันจะจำคำสั่งไปที่ด้านบนสุดของประวัติศาสตร์โดยไม่ต้องดำเนินการดังนั้นเช่นลูกศรขึ้นสามารถเข้าถึงได้ทันทีสำหรับการแก้ไขแบบโต้ตอบ
นอกจากนี้ฉันได้ฝึกทำสิ่งนี้เมื่อเรียกคืนคำสั่งด้วย regexp ที่สามารถขุดสิ่งที่สร้างความเสียหายนับตั้งแต่รีบร้อน!r
ตั้งใจที่จะจำrsync ...
คำสั่งล่าสุดดึงกลับและดำเนินการrm *
สิ่งที่ถูกผลักไปยังกองซ้อน อีกไม่นานกว่า rsync
rm -rf ./*
ไม่เคยรู้สึกขอบคุณมาก่อนในช่วงเวลาหนึ่ง FYI ใช้!xyz:p
งานได้ดีขอบคุณ แต่ต้องการการกดแป้นพิเศษสองสามครั้งกว่าโซลูชัน ctrl-r
EMACS
ในขณะที่! -path ทำงานได้ดีที่สุดสำหรับผู้ใช้งานvi
อย่างฉัน
ดำเนินการคำสั่งต่อไปนี้ มันจะสะท้อนคำสั่งดำเนินการล่าสุด คุณสามารถคัดลอกและแก้ไขคำสั่ง คำสั่งนี้ทดสอบในเดเบียน
ประวัติ | tail -2 | ประวัติ grep -v ตัด -d '' -f4-
หรือกดปุ่ม ctrl + R ค้างไว้แล้วพิมพ์ตัวอักษรเริ่มต้นของคำสั่งสุดท้ายของคุณ มันจะแสดงรายการคำสั่งที่คุณดำเนินการก่อนหน้านี้ตามการป้อนข้อมูลของคุณ เมื่อมันแสดงคำสั่งที่ต้องการเพียงแค่กดลูกศรขวาเพื่อเลือกคำสั่งนั้น
หากการค้นหาประวัติย้อนหลังล้มเหลวให้ทำสิ่งใดสิ่งหนึ่งต่อไปนี้
$ history | grep WHAT_YOU_LOOK_FOR
หรือ:
$ grep WHAT_YOU_LOOK_FOR ~/.bash_history
!
โน้ตเพราะคุณสามารถกด Ctrl-r หลาย ๆ ครั้งเพื่อวนรอบต่อไปในประวัติการจับคู่ เมื่อคุณมาถึงสถานที่ที่เหมาะสมคุณสามารถลองดำเนินการไม่ได้ด้วย Enter แต่ด้วย Ctrl-o เพื่อผลกำไรมาก