Saya berhasil melakukan ini
echo -n " command "> / dev / tty1
Huruf-huruf muncul, dan kursor bergerak, tetapi mereka adalah "hantu" - jika Anda menekan Enter, tidak ada yang terjadi (mereka tidak ada di stdin).
Edit:
Di tengah tangkapan layar di bawah, Anda tahu mengapa saya melihat penggunaan ini. (Garis dengan teks merah, tepat di bawah garis dengan teks kuning.) Seperti sekarang, Anda tidak benar-benar "mengedit" teks catatan; Anda hanya diminta untuk menulis teks baru, yang akan menggantikan teks dari catatan yang sedang Anda edit. Jadi, saya pikir itu bisa diatasi dengan hanya menempelkan teks lama ke tty: jika pengguna mengklik masuk, tidak ada modifikasi yang dilakukan. (Program ini di Perl / MySQL, tapi saya pikir akan lebih menarik untuk meminta solusi umum daripada "bagaimana saya melakukan ini di Perl".)
Edit 2:
Berikut adalah kode Perl, yang menggunakan kode C di bawah ini (berfungsi persis seperti yang dimaksudkan), serta tangkapan layar baru - mudah-mudahan ini akan memperjelas hal-hal tanpa keraguan :) Sekali lagi, lihat di tengah tangkapan layar, tempat pengeditan dibuat ke teks catatan - kali ini, teks lama ada di sana, misalnya jika Anda hanya ingin memperbaiki kesalahan ketik, Anda tidak perlu mengetik ulang seluruh teks catatan.
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);