ประวัติทุบตี
คำสั่งใหม่ใด ๆ ที่ใช้ในเทอร์มินัลที่ใช้งานอยู่สามารถผนวกเข้ากับ.bash_history
ไฟล์ด้วยคำสั่งต่อไปนี้:
history -a
แนวคิดที่ยุ่งยากเพียงอย่างเดียวในการทำความเข้าใจคือแต่ละเทอร์มินัลมีรายการประวัติทุบตีของตัวเอง(โหลดจาก.bash_history
ไฟล์เมื่อคุณเปิดเทอร์มินัล)
หากคุณต้องการดึงประวัติใหม่ใด ๆ ที่ถูกเขียนโดยเทอร์มินัลอื่น ๆ ในช่วงอายุการใช้งานของเทอร์มินัลที่ใช้งานอยู่นี้คุณสามารถผนวกเนื้อหาของ.bash_history
ไฟล์ไปยังรายการประวัติทุบตีที่ใช้งานอยู่
history -c;history -r
การทำเช่นนี้จะล้างรายการประวัติปัจจุบันดังนั้นเราจึงไม่ได้รับรายการซ้ำและผนวกไฟล์ประวัติเข้ากับรายการ (ว่างเปล่าตอนนี้)
วิธีการแก้
คุณสามารถใช้ตัวแปร bash PROMPT_COMMAND
เพื่อออกคำสั่งด้วยพรอมต์ใหม่แต่ละครั้ง (ทุกครั้งที่คุณกด Enter ในเทอร์มินัล)
export PROMPT_COMMAND='history -a'
การทำเช่นนี้จะบันทึกแต่ละคำสั่งไปยังไฟล์ประวัติตามที่ออก
ผลลัพธ์
ตอนนี้เทอร์มินัลใหม่ที่คุณเปิดจะมีประวัติของเทอร์มินัลอื่นโดยไม่ต้องไปexit
ที่เทอร์มินัลอื่น นี่คือขั้นตอนการทำงานที่ฉันต้องการ
แม่นยำยิ่งขึ้น
สมมติว่า (ด้วยเหตุผลบางอย่าง) คุณมีสองเทอร์มินัลที่คุณใช้พร้อมกันและคุณต้องการให้ประวัติสะท้อนระหว่างทั้งสองสำหรับแต่ละคำสั่งใหม่
export PROMPT_COMMAND='history -a;history -c;history -r'
ข้อเสียเปรียบหลักที่นี่คือคุณอาจต้องกด Enter เพื่อเรียกใช้ PROMPT_COMMAND อีกครั้งเพื่อรับประวัติล่าสุดจากเทอร์มินัลฝั่งตรงข้าม
คุณสามารถดูได้ว่าทำไมตัวเลือกที่แม่นยำยิ่งกว่านี้อาจเป็น overkill แต่ใช้ได้กับกรณีการใช้งานนั้น