Existe uma maneira de 'tee' inserir um programa ou script?

4

Estou tentando encontrar uma maneira de usar um arquivo de entrada para um programa de tal forma que eu também possa usar stdin.

Por exemplo, digamos que eu tenha um script SQL que crie uma tabela. Eu invoco assim:

mysql -p database < script.sql

Isso é ótimo, mas sai do mysql quando o script é concluído. Em vez disso, quero executar outras consultas manualmente sem ter saído do mysql.

Eu sei que tee pode bifurcar a saída para o terminal (stdout) e para um arquivo, existe uma função reversa que pode ser usada para entrada, ou pelo menos um método que pode ser aplicado à maioria dos comandos Linux / Unix?

    
por David Wilkins 26.03.2014 / 20:46

2 respostas

11
cat script.sql - | mysql -p database
    
por 26.03.2014 / 21:28
5

Eu gosto da resposta do Stephane para o caso geral, mas aqui está algo mais apropriado para o seu exemplo específico.

Inicie o modo interativo do MySQL e use o comando source para executar scripts SQL.

$ mysql -p  
Enter password:  
Welcome to the MySQL monitor.  Commands end with ; or \g.  
Your MySQL connection id is 947  
Server version: 5.1.73-1 (Debian)  

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  

mysql> source asdf.sql  
+------+  
| test |  
+------+  
| test |  
+------+  
1 row in set (0.00 sec)  

mysql> select 'cool';  
+------+  
| cool |  
+------+  
| cool |  
+------+  
1 row in set (0.00 sec)  

mysql> 
    
por 26.03.2014 / 23:59