วิธีการรับประวัติคำสั่งที่ไม่มีที่สิ้นสุดในทุบตี?


54

ฉันตั้งexport HISTSIZE=99999999999999แต่นั่นเป็นวิธีที่ดีที่สุด? ฉันไม่รู้ว่าอาจเกิดโอเวอร์โฟลว์หรือไม่ ฉันกำลังมองหาวิธีทดสอบที่เชื่อถือได้เพื่อลบขีด จำกัด ประวัติคำสั่ง


ไม่มีกลไกในการทำสิ่งที่ฉันรู้

ฉันแค่แสดงความคิดเห็นเพื่อที่ว่าเมื่อสิ่งนี้ได้รับคำตอบฉันก็จะรู้เช่นกัน !!

2
debian-administr.org/articles/543อาจเป็นคำตอบที่ดีกว่า อย่างน้อยก็จัดการค่าอินฟินิตี้ที่ใหญ่กว่าโซลูชันบน superuser :-)

คุณอาจลดค่าลงได้ถึง 9999 ในทางปฏิบัติ (หรือแม้แต่ 999; ฉันใช้ 1,000) ฉันไม่เคยพบประวัติที่ใหญ่กว่าประมาณ 1,000 คนที่มีประโยชน์ หากฉันต้องการกู้คืนคำสั่งเพื่อทำให้เป็นสคริปต์โดยปกติฉันทำได้ดีภายในหนึ่งพันคำสั่ง ไม่อย่างนั้นสามารถไปได้และไม่มีอันตรายใด ๆ เกิดขึ้น
Jonathan Leffler

@JanathanLeffler: ของฉันคือ 1300 บรรทัดและมันมีขนาดเล็กเท่าที่ฉันสามารถทำได้ Ctrl-R มีประโยชน์มาก
l0b0

คำตอบ:


69

มันไม่ได้จัดทำเป็นเอกสาร (อย่างดี) และฉันคิดว่า 99% ของผู้ใช้ทุบตีในแผนนี้จะตั้ง HISTSIZE เป็นจำนวนมาก

ในประวัติทุบตี GNU ได้รับการจัดการผ่านไลบรารี readline อันยิ่งใหญ่ ไลบรารีมีตัวเลือกเพื่อ จำกัด ขนาดประวัติ ("stifle" ในศัพท์แสงแบบ readline) หรือไม่และ bash เพียงแค่ตั้งค่าประวัติ readline เป็น stifled / unstifled ถ้าคุณดูเช่น GNU bash เวอร์ชั่น 4.2, ไฟล์แปรปรวน, บรรทัด 4443, ฟังก์ชั่นโมฆะ sv_histsize (ถ่าน *) คุณจะพบความคิดเห็นนี้ (และ stifling / unstifling ทั้งหมดในฟังก์ชั่นที่ตามมา):

/ * จะทำอย่างไรหลังจากตัวแปร HISTSIZE หรือ HISTFILESIZE เปลี่ยนไป
หากมีค่าสำหรับ HISTSIZE นี้ (และเป็นตัวเลข) ให้ยับยั้งประวัติ มิฉะนั้นหากไม่มีค่าสำหรับตัวแปรนี้ให้
ยกเลิกการแยกประวัติ หากชื่อคือ HISTFILESIZE และค่าเป็น
ตัวเลขให้ตัดประวัติไฟล์เพื่อเก็บไม่เกินหลาย
บรรทัด * /

ดังนั้นสิ่งนี้ควรทำเคล็ดลับ:

export HISTSIZE=""

และสิ่งนี้ (ถ้าคุณรู้สึกท้าทาย):

export HISTSIZE="GOTCHA"

หวังว่านี่จะช่วยได้


2
ขออวยพรให้คุณ Tux :)
meeDamian

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