我设法做到了
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);