GNU/Linux >> Linux の 問題 >  >> Linux

文字列をTtyに入れてコマンドを作成しますか?

私はなんとかこれを行うことができました

echo -n "command" > /dev/tty1

文字が表示され、カーソルが移動しますが、 Enterを押すと「ゴースト」になります。 、何も起こりません(stdinにはありません)。

編集:

下のスクリーンショットの真ん中に、私がこれの使用を見る理由がわかります。 (赤いキャプションのある行、黄色のキャプションのある行のすぐ下。)現在のように、メモのテキストを実際に「編集」しているわけではありません。新しいテキストを書くように求められます。これにより、(実際には)編集しているノートのテキストが置き換えられます。したがって、古いテキストを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);

承認された回答:

writevtという小さなCプログラムを見つけました それはトリックを行います。ここでソースコードを入手してください。 gccでコンパイルするには 最初に次の行を削除してください:

#include <lct/cline.h>
#include <lct/utils.h>

更新 。コマンドはconsole-toolsの一部になりました 、したがって、ディストリビューションで kbd を使用しない限り、より最近のシステムで利用できます。 console-toolsの代わりに 、この場合、ソースからコンパイルできます(はるかに新しいバージョンで、変更は必要ありません)。

使用法:

sudo writevt /dev/ttyN command 

何らかの理由で、'r'を使用する必要があることに注意してください (または'x0D''n'の代わりに (または'x0A' )返品を送信します。


Linux
  1. 文字列の最後の3文字だけを印刷するコマンド?

  2. 出力を文字列に変換する

  3. bash のテキスト文字列を配列に変換する

  1. Grepコマンドを使用してファイル内のテキストを検索する方法

  2. sedを使用してコマンドラインでテキストを操作する

  3. Linuxコマンドを使用して画像にテキストを書き込む方法

  1. Md5sumコマンドのバイナリおよびテキストモード?

  2. Linuxターミナルでテキストファイルを作成する4つの方法

  3. コマンド例を含むvimチュートリアル