在我的机器上,该命令mysql -e "show databases"
生成以下输出:
$ mysql -e "show databases
+--------------------+
| Database |
+--------------------+
| information_schema |
| database1 |
| database2 |
| mysql |
| performance_schema |
| sys |
+--------------------+
但是,当我将其传递给任何命令(或重定向到文件)时,格式会消失:
$ mysql -e "show databases" | cat
Database
information_schema
database1
database2
mysql
performance_schema
sys
我认为格式化可能是通过 stderr 进行的,但情况似乎并非如此:
$ mysql -e "show databases" 2>/dev/null
+--------------------+
| Database |
+--------------------+
| information_schema |
| database1 |
| database2 |
| mysql |
| performance_schema |
| sys |
+--------------------+
为什么格式化字符不通过管道?我可以改变这种行为吗?
答案1
当管道从标准输出更改为另一个应用程序时,MySQL 会更改输出[格式]。
要保留此格式,请使用--table
选项或使用--tabbed
或--vertical
。