ถ้าฉันกดลูกศรขึ้นหรือลงบนแป้นพิมพ์แล้วแก้ไขบางอย่างจากประวัติของฉันมันจะเปลี่ยนไปตลอดกาล แม้ว่าฉันกด Ctrl-C จากนั้นลองนำมันขึ้นมาอีกครั้งมันก็ยังเปลี่ยนไป - ฉันทำรายการนั้นหายไปในประวัติศาสตร์
ฉันจะป้องกันไม่ให้สิ่งนี้เกิดขึ้นได้อย่างไร
ถ้าฉันกดลูกศรขึ้นหรือลงบนแป้นพิมพ์แล้วแก้ไขบางอย่างจากประวัติของฉันมันจะเปลี่ยนไปตลอดกาล แม้ว่าฉันกด Ctrl-C จากนั้นลองนำมันขึ้นมาอีกครั้งมันก็ยังเปลี่ยนไป - ฉันทำรายการนั้นหายไปในประวัติศาสตร์
ฉันจะป้องกันไม่ให้สิ่งนี้เกิดขึ้นได้อย่างไร
คำตอบ:
คุณต้องการตั้งค่า readline:
set revert-all-at-newline on
คุณสามารถวางไว้ใน~/.inputrc
(ดูหมายเหตุด้านล่าง) หรือใส่ในของคุณbind 'revert-all-at-newline on'
~/.bashrc
การสาธิต:
$ man bash
$ bind 'set revert-all-at-newline on'
$ man bsh # up arrow and edit
No manual entry for bsh
$ man bash # three up arrows
รายละเอียดเพิ่มเติมอยู่ในBash manpage :
revert-all-at-newline
หากตั้งค่าเป็น '
on
' Readline จะยกเลิกการเปลี่ยนแปลงทั้งหมดในประวัติบรรทัดก่อนส่งคืนเมื่อเรียกใช้งานบรรทัดการเรียกใช้ ตามค่าเริ่มต้นบรรทัดประวัติอาจถูกแก้ไขและเก็บรักษารายการเลิกทำแต่ละรายการระหว่างการโทรไปยัง readline ค่าเริ่มต้นคือ 'off
'
บันทึก:
ถ้าใหม่
~/.inputrc
ไฟล์ถูกสร้างขึ้นเพื่อวัตถุประสงค์ของการตั้งค่าrevert-all-at-newline
จะทราบว่าทุบตีจะใช้การตั้งค่าที่ ReadLine ในแฟ้มนี้แทนการตั้งค่าใด ๆ/etc/inputrc
ซึ่งอาจจะเป็นในแฟ้ม นั่นคือการตั้งค่าใด ๆ ที่ระบุไว้/etc/inputrc
จะไม่มีผลอีกต่อไป ดังนั้นหาก/etc/inputrc
ไฟล์มีอยู่คุณควรเริ่มต้น~/.inputrc
ด้วยบรรทัด:
$include /etc/inputrc
ฉันป้อน:
ls /tmp
- วิเศษ ตอนนี้ฉันไม่ต้องการเข้า
ls /temp
และสามารถป้องกันการป้อนประวัติดังนั้นป้องกันการเขียนทับ ls / tmp หากฉันเริ่มต้นคำสั่งด้วยช่องว่าง:
ls /temp
มันยากที่จะเห็น แต่ถ้าคุณรู้ ...
มันถูกควบคุมโดย
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
ละเว้นอัพคำสั่งที่ซ้ำกันเท่านั้นละเว้นละเว้นทั้งช่องว่างที่จุดเริ่มต้นของบรรทัดซึ่งมีประโยชน์เพื่อซ่อนรหัสผ่านไม่ได้ซ่อน
แต่บางทีคุณอาจจะออกไปแก้ปัญหาที่คุณจบด้วยคำสั่งทั้งคู่เก่าที่ยังไม่ได้แก้ไขและใหม่ การทุบตีหรือการตั้งค่าเวอร์ชันของฉันมีลักษณะเช่นนี้ แต่ฉันไม่รู้ว่าอะไรแตกต่างจากของคุณ