Tôi quản lý để làm điều này
echo -n " lệnh "> / dev / tty1
Các chữ cái xuất hiện và con trỏ di chuyển, nhưng chúng là "bóng ma" - nếu bạn nhấn Enter, không có gì xảy ra (chúng không ở trong stdin).
Biên tập:
Ở giữa ảnh chụp màn hình bên dưới, bạn thấy lý do tại sao tôi thấy việc sử dụng này. (Dòng có chú thích màu đỏ, ngay bên dưới dòng có chú thích màu vàng.) Như hiện tại, bạn không thực sự "chỉnh sửa" văn bản ghi chú; bạn chỉ được yêu cầu viết một văn bản mới, nó sẽ thay thế văn bản của ghi chú bạn đang (không thực sự) chỉnh sửa. Vì vậy, tôi nghĩ rằng nó có thể được khắc phục bằng cách dán văn bản cũ vào tty: nếu người dùng nhấn enter, không có sửa đổi nào được thực hiện. (Chương trình này có trong Perl / MySQL, nhưng tôi nghĩ sẽ thú vị hơn khi yêu cầu một giải pháp chung hơn là "làm thế nào để tôi làm điều này trong Perl".)
Chỉnh sửa 2:
Đây là mã Perl, sử dụng mã C bên dưới (hoạt động chính xác như dự định), cũng như ảnh chụp màn hình mới - hy vọng điều này sẽ làm rõ những điều không thể nghi ngờ :) Một lần nữa, hãy nhìn vào giữa ảnh chụp màn hình, nơi thực hiện chỉnh sửa đến văn bản ghi chú - lần này, văn bản cũ ở đó, ví dụ nếu bạn chỉ muốn sửa lỗi chính tả, bạn sẽ không phải gõ lại toàn bộ văn bản ghi chú.
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);