2009-08-30 54 views
0

我不确定这里用/ usr/bin/mysql输出的线条艺术在这里发生了什么。无法理解这种奇怪的MySql客户端行为

问题:我无法将艺术线条(用于创建表格列)重定向到文件!

首先,我在终端上这样做。

[[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 | 
+---------+--------------+--------+ 

现在,我想上面拍摄的印这整个祝福的事情,所以我重定向输出和错误的文件“出来”,像这样:

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

正如你可以看到下面的线艺术完全缺失!

[[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 

更证明了艺术线条真的失踪了! (-T选项打印选项卡,如果有的话)

[[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 

所以,我的问题是,如何赫克用MySQL知道 - 无论是终端还是一个文本文件 - 吮吸它的输出从'后端' :-)?

回答

2

程序可确定输出流是否是终端或 不使用isatty (3) function

MySQL使用这些信息来改变其输出(见man mysql,“-t”选项生成表格输出非交互模式也是如此)

+0

谢谢彼得。 为您+1。 – Harry 2009-08-30 09:25:54

2

知道

的情况类似于

$ ls 
tom dick harry 

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

谢谢,pavium。 为您+1。 – Harry 2009-08-30 09:26:29