ฉันจัดการเพื่อทำสิ่งนี้
echo -n " คำสั่ง "> / dev / tty1
ตัวอักษรจะปรากฏขึ้นและเคอร์เซอร์จะเคลื่อนที่ แต่มันก็เป็น "ผี" - หากคุณกดปุ่มจะEnterไม่มีอะไรเกิดขึ้น
แก้ไข:
ในกลางหน้าจอด้านล่างคุณจะเห็นว่าทำไมฉันเห็นการใช้งานนี้ (บรรทัดที่มีคำอธิบายภาพสีแดงด้านล่างบรรทัดที่มีคำอธิบายภาพสีเหลือง) เนื่องจากตอนนี้คุณไม่ได้ "แก้ไข" ข้อความบันทึกย่อจริงๆ คุณเพิ่งถูกขอให้เขียนข้อความใหม่ซึ่งจะแทนที่ข้อความของบันทึกย่อที่คุณกำลังแก้ไข (ไม่ใช่จริง ๆ ) ดังนั้นฉันคิดว่ามันสามารถแก้ไขได้โดยเพียงแค่วางข้อความเก่าลงใน tty: หากผู้ใช้กด Enter จะไม่มีการดัดแปลงใด ๆ (โปรแกรมนี้อยู่ใน Perl / MySQL แต่ฉันคิดว่ามันน่าสนใจมากกว่าที่จะขอวิธีแก้ปัญหาทั่วไปมากกว่า "ฉันจะทำสิ่งนี้ใน Perl" ได้อย่างไร)
แก้ไข 2:
นี่คือรหัส Perl ที่ใช้รหัส C ด้านล่าง (ใช้งานได้ตามที่ตั้งใจ) และภาพหน้าจอใหม่ - หวังว่านี่จะช่วยชี้แจงสิ่งต่าง ๆ โดยไม่ต้องสงสัย :) ดูอีกครั้งที่กึ่งกลางภาพซึ่งทำการแก้ไข ในข้อความโน้ต - คราวนี้มีข้อความเก่าอยู่ที่นั่นตัวอย่างเช่นหากคุณต้องการแก้ไขการพิมพ์ผิดคุณจะไม่ต้องพิมพ์ข้อความโน้ตทั้งหมดซ้ำอีก
my $edit_note_text = $edit_note_data[2];
print BOLD, RED, " new text: ", RESET;
system("writevt /dev/tty \"$edit_note_text\"");
my $new_text = <$in>;
$new_text = fix_input($new_text);
my $set_text = "UPDATE notes SET note = \"$new_text\" WHERE id = $edit_note_id";
$db->do($set_text);