私はこれをどうにかして
echo -n " command "> / dev / tty1
文字は表示され、カーソルは移動しますが、それらは「ゴースト」です。ヒットするとEnter、何も起こりません(標準入力ではありません)。
編集:
下のスクリーンショットの真ん中に、私がこれを使用する理由がわかります。(赤いキャプションが付いた行、黄色のキャプションが付いた行のすぐ下。)今のままでは、実際にはノートテキストを「編集」していません。新しいテキストを書くように求められます。これは、編集中の(実際には)ノートのテキストを置き換えます。したがって、古いテキストをttyに貼り付けるだけで改善できると考えました。ユーザーがEnterキーを押しても、変更は行われません。(このプログラムはPerl / MySQLにありますが、「Perlでこれを行う方法」よりも一般的な解決策を求める方が面白いと思いました。)
編集2:
以下は、以下のCコード(意図したとおりに動作します)を使用するPerlコードと、新しいスクリーンショットです。これにより、疑いの余地がないことがわかります。ノートテキストに-今回は古いテキストがあります。たとえば、タイプミスを修正したいだけの場合、ノートテキスト全体を再入力する必要はありません。
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);