上記の@JulienPalardのコメントを明確にするために、次のコマンドで目的を達成できるはずです。
(私は 2 つの異なるシェル プロセスを使用しますが、彼は 1 つを使用します。私の説明では、両方のシェルを同時に表示して、一方のシェルで出力を読み取り、もう一方のシェルで入力を書き込むことができるようにしてみてください。 mysql プロセスをバックグラウンドに置くことができるため、1 つのシェルのみを使用できます。)
シェル 1: 出力
$ mkfifo mypipe # create a named pipe
$ chmod 666 mypipe # Give all users read-write access to the pipe
$ tail -f mypipe | mysql -umyName -p mySchema # pipe mypipe into mysql
上記の最後の行は、名前付きパイプが mysql プロセスに永続的にフィードするように指示します。何かを mypipe にエコーするたびに、標準入力として mysql プロセスに送信されます。
tail
この後、プロセスを強制終了するまでコマンドが実行されるため、新しいプロンプトは表示されません。
他のシェル プロセス (シェル 2: 入力) を使用して にコマンドを送信している間、このシェルを開いてそのtail
プロセスを実行したままにしますmysql
。
シェル 2: 入力
$ echo 'show tables;' > mypipe # this will print output onto your *other* shell (Shell 1: output)
$ echo 'insert into mytable (1,2,3);' > mypipe # this performs an insertion