Bunu yapmayı başardım
echo -n " komut "> / dev / tty1
Harfler belirir ve imleç hareket eder, ancak bunlar "hayalet" tir - vurursanız Enterhiçbir şey olmaz (stdin içinde değildir).
Düzenle:
Aşağıdaki ekran görüntüsünün ortasında, bunun kullanımını neden gördüğümü görüyorsunuz. (Kırmızı başlıklı satır, sarı başlıklı satırın hemen altında.) Şimdilik olduğu gibi, not metnini gerçekten "düzenlemiyorsunuz"; sizden sadece düzenlediğiniz notun metninin yerini alacak yeni bir metin yazmanız istenir. Böylece, sadece eski metni tty'ye yapıştırarak giderilebileceğini düşündüm: kullanıcı girerse, değişiklik yapılmaz. (Bu program Perl / MySQL'de, ancak genel bir çözüm istemenin "bunu Perl'de nasıl yapabilirim" den daha ilginç olacağını düşündüm.)
Düzenleme 2:
İşte aşağıdaki C kodunu (tam olarak tasarlandığı gibi çalışır) ve yeni bir ekran görüntüsünü kullanan Perl kodu - umarım bu şüphenin ötesinde şeyleri netleştirir :) Tekrar, düzenlemenin yapıldığı ekran görüntüsünün ortasına bakın not metnine - bu sefer eski metin oradadır, örneğin sadece bir yazım hatasını düzeltmek istiyorsanız, not metninin tamamını yeniden yazmak zorunda kalmazsınız.
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);