โซลูชันนี้ดูเหมือนจะค่อนข้างดีสำหรับฉันหลังจากที่ฉันใช้มาระยะหนึ่งแล้ว
เพิ่มสิ่งต่อไปนี้ให้กับคุณ ~/.bashrc ไฟล์:
ช็อป - s histappend
PROMPT_COMMAND="ประวัติ -a; ประวัติ -c; ประวัติ -r; $PROMPT_COMMAND"
fc_override_prev_command_if_no_args() {
ถ้า [ $# -eq 0 ]; แล้ว
เอฟซี
ประวัติ -d $(wc -l < ~/.bash_history)
ประวัติศาสตร์ -w
ประวัติศาสตร์ -ค
ประวัติศาสตร์ -r
อื่น
เอฟซี$@
ไฟ
}
นามแฝง fc=fc_override_prev_command_if_no_args
สิ่งนี้คืออะไร การเปลี่ยนแปลง พฤติกรรมของ เอฟซี คำสั่งเมื่อมีการเรียกโดยไม่มีอาร์กิวเมนต์ เมื่อมันถูกเรียกด้วยข้อโต้แย้ง ฉันทำให้มันประพฤติตามปกติ เพราะมิฉะนั้น พฤติกรรมของมันจะทำให้เข้าใจผิดโดยไม่ ถ้า/อื่น/fi บล็อกและไม่มี อื่น ส่วนมันจะไม่ทำอะไรเลย
ในทางกลับกัน เมื่อไม่มีการให้ข้อโต้แย้งใดๆ เอฟซี คำสั่งถูกดำเนินการ รายการสุดท้ายจากประวัติการทุบตีจะถูกทิ้ง และประวัติแคชจะถูกรีโหลดจากไฟล์
ส่วนที่มีการกำหนดตัวแปร PROMPT_COMMAND ใหม่ที่ฉันยืมมา ที่นี่ และฉันพบว่ามันมีประโยชน์เนื่องจากคำสั่งที่ส่งนั้นพร้อมใช้งานทันทีในประวัติ bash ของเทอร์มินัลอื่น ๆ ที่เปิดอยู่ในปัจจุบันด้วย bash (ตกลง ไม่ใช่ในทันที แต่แม้แต่การกระทำเช่นการส่ง ซิกท์ สัญญาณด้วย Ctrl+C ก็เพียงพอที่จะโหลดแคชประวัติซ้ำ)
อย่าลังเลที่จะแก้ไขคำตอบนี้หรือแสดงความคิดเห็นหากคุณพบว่าบางส่วนของโซลูชันไม่จำเป็น
เชื่อมโยงไปยัง ส่วนสำคัญ ด้วยตัวอย่างข้อมูลข้างต้น ที่นี่