나는 이것을 할 수 있었다
echo -n " command "> / dev / tty1
글자가 나타나고 커서가 움직이지만 글자는 "고스트"입니다. –를 누르면 Enter아무 일도 일어나지 않습니다 (그들은 stdin에 있지 않습니다).
편집하다:
아래 스크린 샷 중간에 내가 왜 이것을 사용하는지 알 수 있습니다. (빨간색 캡션이있는 줄은 노란색 캡션이있는 줄 바로 아래에 있습니다.) 현재와 같이 메모 텍스트를 실제로 "편집"하지는 않습니다. 새 텍스트를 작성하라는 메시지가 표시됩니다.이 텍스트는 편집중인 노트의 텍스트를 대체합니다. 따라서 이전 텍스트를 tty에 붙여 넣으면 해결할 수 있다고 생각했습니다. 사용자가 Enter 키를 누르면 수정이 이루어지지 않습니다. (이 프로그램은 Perl / MySQL에 있지만 "Perl에서이 작업을 수행하는 방법"보다 일반적인 해결책을 찾는 것이 더 흥미로울 것이라고 생각했습니다.)
편집 2 :
새로운 C 스크린 샷뿐만 아니라 아래의 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);