Мені вдалося це зробити
echo -n " команда "> / dev / tty1
Букви з’являються, і курсор рухається, але вони є «привидами» - якщо ти вдариш Enter, нічого не станеться (вони не в stdin).
Редагувати:
У середині скріншоту нижче ви бачите, чому я бачу використання цього. (Рядок із червоним заголовком, прямо під рядком із жовтим заголовком.) Як і зараз, ви насправді не «редагуєте» текст примітки; вас просто попросять написати новий текст, який замінить текст замітки, яку ви (не дуже) редагуєте. Таким чином, я подумав, що це можна виправити, просто вставивши старий текст у tty: якщо користувач звернеться, внесення змін не буде здійснено. (Ця програма знаходиться в 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);