Мне удалось это сделать
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);