Чтобы уточнить комментарий @ JulienPalard выше, вы сможете достичь своей цели с помощью следующих команд.
(Я использую два разных процесса оболочки, тогда как он использует один. Для моего описания, попробуйте сделать так, чтобы обе оболочки были видны одновременно, чтобы вы могли прочитать вывод в одной оболочке и записать ввод в другой. Если вы знаете, что вы при этом вы можете поместить процесс mysql в фоновый режим и, таким образом, использовать только одну оболочку.)
Оболочка 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
будет работать до тех пор, пока вы не уничтожите ее процесс.
Держите эту оболочку открытой и выполняйте процесс tail
, пока вы используете другой процесс оболочки (Shell 2: ввод) для отправки команд на 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