วิธีหยุด Bash ต่อท้ายประวัติ


9

ฉันมีปัญหามากมายในการตั้งค่าประวัติเทอร์มินัลของ Bash ในแบบที่ฉันต้องการ ฉันต้องการที่จะไม่มีรายการที่ซ้ำกันและถ้าฉันป้อนคำสั่งที่ฉันต้องการมันบันทึกและรายการที่ซ้ำกันข้างต้นถูกลบออก

ปัญหาคือhistoryคำสั่งแสดงให้ฉันเห็นว่ามันทำงานได้อย่างที่ฉันต้องการ แต่เมื่อฉันออกจากระบบรายการที่ซ้ำกันจะกลับมาอีกครั้ง ฉันเชื่อว่ามันเป็นเพียงการต่อท้ายประวัติศาสตร์กับสิ่งที่มีอยู่ ฉันมีบรรทัดเหล่านี้ใน.bashrcไฟล์ของฉัน:

HISTCONTROL=ignoreboth:erasedups
shopt -u histappend

ฉันได้ลองแม้shoptไม่แสดงความคิดเห็น แต่ก็ยังผนวกประวัติในการออกจากระบบ ฉันจะมีประวัติว่าเป็นอย่างไรก่อนที่จะออกจากระบบ?


2
มีคำอธิบายที่ดีที่นี่: unix.stackexchange.com/questions/18212/…
jasonwryan

คำตอบ:


7

สิ่งที่erasedupsควรทำในสิ่งที่คุณต้องการเกี่ยวกับรายการที่ซ้ำกัน - โปรดทราบว่าการลบรายการที่ซ้ำกันจะถูกเรียกใช้ในขณะที่เพิ่มรายการใหม่ในประวัติต่อท้ายและจะลบรายการเก่าที่เกิดขึ้นทั้งหมดของคำสั่ง


ตอบคำถาม " ฉันจะมีประวัติได้อย่างไรก่อนที่จะออกจากระบบ "

วิธีที่ฉันเห็นมันจะมีประโยชน์เพียงครั้งเดียว (ไม่เช่นนั้นทำไมคุณถึงใช้ประวัติเลย) คุณสามารถทำได้โดยการออก

history -c; history -r

สิ่งนี้จะล้างรายการประวัติทั้งหมดที่ถูกเก็บไว้ในหน่วยความจำในปัจจุบันจากนั้นอ่านประวัติทั้งหมดจากไฟล์ประวัติ ดังนั้นคำสั่งทั้งหมดที่คุณออกตั้งแต่เข้าสู่เซสชันเชลล์ปัจจุบันจะถูกลืม ฉันพบว่ามันค่อนข้างมีประโยชน์ในสถานการณ์เมื่อฉันทำการทดสอบจำนวนมาก (คำสั่งที่คล้ายกันจำนวนมาก แต่ไม่ซ้ำกันจริง ๆ ) และจากนั้นไม่ต้องการให้ประวัติของฉันถูกอ่านอย่างนั้น - ดังนั้นฉันจึงมีนามแฝงอยู่ใน.bashrc:

alias hrr='history -c; history -r'

( hrrเพื่อให้จดจำได้ว่า "อ่านประวัติอีกครั้ง")

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