ZSH - ส่งออกประวัติศาสตร์ทั้งหมดหรือไม่


37

ฉันเพิ่งเปลี่ยนจาก bash เป็น zsh ใน bash วิธีหนึ่ง (นอกเหนือจากการค้นหาแบบเรียกซ้ำ) ที่ฉันใช้เพื่อค้นหาคำสั่งที่รันก่อนหน้านี้คือhistory | grep whateverที่ซึ่งwhateverคำสั่งบิตที่ฉันจำได้

ใน zsh สิ่งนี้ไม่ทำงาน historyส่งคืนสินค้าเพียงไม่กี่รายการแม้ว่า.zsh_historyไฟล์ของฉันจะมีหลายรายการซึ่งฉันได้กำหนดค่าให้ทำ

ฉันจะส่งออกประวัติศาสตร์ทั้งหมดของฉันที่เหมาะสมสำหรับการค้นหาด้วยgrep?

คำตอบ:


48

ประวัติความเป็นมารับช่วงในรายการ zsh เป็นข้อโต้แย้งเพื่อที่จะได้รับพวกเขาวิ่งทั้งหมด[first] [last]history 0

ในการรับความช่วยเหลือ zsh (อย่างน้อยก็มีใจ) ให้พิมพ์Alt-hคำสั่ง history และสิ่งนี้จะนำความช่วยเหลือสำหรับบิวด์อิน


3
ที่ดี! แม้ว่าจะเป็นค่าเริ่มต้นที่น่ารำคาญสำหรับฉันดังนั้นฉันจึงเพิ่มสิ่งนี้ลงในไฟล์นามแฝงของฉัน:alias history="history 0"
นาธานยาว

7
ไม่สำคัญ แต่รายการประวัติเริ่มต้นที่ 1 และไม่ใช่ 0
ggustafsson

2
ฉันใช้นามแฝงนี้เอง:alias h='history 1 | grep'
Harald Nordgren

3
ดูเหมือนจะใช้งานไม่ได้สำหรับฉัน: ฉัน~/.zsh_historyมี 1,066 บรรทัด แต่history 0(หรือเทียบเท่าfc -l 0) พิมพ์เฉพาะ 4999 บรรทัด
jayhendren

2
สำหรับhistory 1 | grepคนฉันหวังว่าคุณจะรู้ctrl+r- เคล็ดลับ / ทางลัดที่ดีที่สุด!
Emil Vatai

9

คำตอบที่ยอมรับนั้นถูกต้อง แต่คุณไม่จำเป็นต้องโทรหาgrepไบนารี่ภายนอกเพื่อทำการค้นหาเนื่องจากความสามารถนั้นถูกอบฉันมีฟังก์ชั่นนี้ที่กำหนดไว้ใน.zshrc:

histsearch() { fc -lim "*$@*" 1 }

หมายเหตุ:

  • fcเป็น zsh builtin ที่ควบคุมประวัติเชิงโต้ตอบ เทียบเท่ากับhistoryfc -l

  • -mธงต้องมีรูปแบบซึ่งจะต้องถูกยกมา

  • -iธงเพิ่มการประทับเวลา

  • fcมีเคล็ดลับเพิ่มเติมมากมาย (เช่น จำกัด การค้นหาประวัติภายในสำหรับเซสชันปัจจุบัน) ดูzshbuiltins(1)หน้าคนหรือเอกสารอย่างเป็นทางการ


ยังดีกว่าคือใช้รูปแบบ "* $ @ *" (หมายเหตุดาวเพิ่มเติม) แทนที่จะเป็น "$ @" เนื่องจากรูปแบบหลังให้ผลลัพธ์ที่ตรงกันเท่านั้น
Piotr Dobrogost

1
@PiotrDobrogost ถูกต้องแล้ว! ฉันไม่แน่ใจว่าฉันจัดการเพื่อส่งคำตอบนี้ในสถานะที่ฉันทำอย่างไร - ฉันเดาว่าฉันต้องพิมพ์ฟังก์ชันนั้นจากหน่วยความจำ เนื่องจากมันไม่สามารถใช้งานได้มากดังนั้นฉันจะแก้ไขคำตอบเพื่อรวมเครื่องหมายดอกจัน
wjv

3

มีลักษณะที่fzf มันช่วยไม่เพียง แต่ค้นหา "สิ่งที่มีอนุภาค" ในประวัติเชลล์ของคุณ แต่ยังอยู่ในสถานที่ที่น่าสนใจอื่น ๆ เช่นประวัติเบราว์เซอร์ประวัติไดเรกทอรี ฯลฯ

fzf เป็นตัวค้นหาฟัซซี่บรรทัดคำสั่ง นั่นหมายความว่าคุณสามารถค้นหาอนุภาคหรือเศษส่วนของสิ่งที่คุณกำลังมองหาและจะแสดงชุดของการแข่งขันที่คุณสามารถปรับแต่งอย่างต่อเนื่อง มันเป็นตัวเปลี่ยนเกมจริงๆ

หน้าแรกของผู้เขียนที่มีจำนวนตัวอย่างตัวอย่าง


ลองเพิ่มการอ้างอิงถึงคำตอบนี้เพื่อสนับสนุนสิ่งที่คุณระบุ
Pimp Juice IT

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