我不确定/ usr / bin / mysql这里的艺术线条输出是怎么回事。
问题:我无法将艺术线条(用于创建表格列)重定向到文件中!
首先,我在终端上这样做。
[sd@host:~/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 |
+---------+--------------+--------+
现在,我希望在捕获的上面打印出完整的祝福,所以我将stdout和stderr重定向到'out'文件,如下所示:
[sd@host:~/tmp]
$ mysql -usd sd -e 'select * from loan;' >out 2>&1
如下所示,线条艺术完全缺失!
[sd@host:~/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选项打印选项卡,如果有的话。)
[sd@host:~/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如何知道谁 - 终端或文本文件 - 是否正在吸引其输出它的后端' :-)?
答案 0 :(得分:2)
程序可以确定输出流是终端还是终端 没有使用isatty (3) function。
MySQL使用此信息更改其输出(请参阅man mysql,“ - t”选项也为非交互模式生成表输出)
答案 1 :(得分:2)
知道
情况类似于
$ ls
tom dick harry
和
$ ls > out
$ cat out
tom
dick
harry