2009-08-30 10 views
0

Je ne suis pas sûr de ce qui se passe ici avec le résultat de dessin au trait par/usr/bin/mysql ici.Impossible de comprendre cet étrange comportement du client MySQL

Le problème: Je ne peux pas rediriger le dessin au trait (utilisé dans la création des colonnes de la table) vers un fichier! D'abord, je le fais sur mon terminal.

[[email protected]:~/tmp] 
$ mysql -usd sd -e 'select * from loan;' 
+---------+--------------+--------+ 
| loan_no | branch_name | amount | 
+---------+--------------+--------+ 
| L-11 | Round Hill | 900 | 
| L-14 | Downtown  | 1500 | 
| L-15 | Perryridge | 1500 | 
| L-16 | Perryridge | 1300 | 
| L-17 | Downtown  | 1000 | 
| L-23 | Redwood  | 2000 | 
| L-93 | Mianus  | 500 | 
+---------+--------------+--------+ 

Maintenant, je veux tout ce truc béni imprimé au-dessus capturé, alors je redirigent stdout et stderr au fichier « out », comme ceci:

[[email protected]:~/tmp] 
$ mysql -usd sd -e 'select * from loan;' >out 2>&1 

Comme vous pouvez le voir ci-dessous, la ligne l'art est complètement manquant!

[[email protected]:~/tmp] 
$ cat out 
loan_no branch_name amount 
L-11 Round Hill 900 
L-14 Downtown 1500 
L-15 Perryridge 1500 
L-16 Perryridge 1300 
L-17 Downtown 1000 
L-23 Redwood 2000 
L-93 Mianus 500 

Plus de preuves que le dessin au trait est vraiment manquant! (. -T option imprime les onglets, le cas échéant)

[[email protected]:~/tmp] 
$ cat -T out 
loan_no^Ibranch_name^Iamount 
L-11^IRound Hill^I900 
L-14^IDowntown^I1500 
L-15^IPerryridge^I1500 
L-16^IPerryridge^I1300 
L-17^IDowntown^I1000 
L-23^IRedwood^I2000 
L-93^IMianus^I500 

Alors, ma question est , comment diable fait savoir mysql qui - si un terminal ou un fichier texte - SUCE sa sortie de «son extrémité arrière» :-)?

Répondre

2

Le programme peut déterminer si le flux de sortie est le terminal ou sans utiliser isatty (3) function.

MySQL utilise ces informations pour modifier sa sortie (voir man mysql, "-t" option produit sortie de la table pour le mode non-interactif aussi)

+0

Merci Peter. Augmentation de +1 pour vous. – Harry

2

Il sait

La situation est analogue à

$ ls 
tom dick harry 

et

$ ls > out 
$ cat out 
tom 
dick 
harry 
+0

Merci, Pavium. Augmentation de +1 pour vous. – Harry