不可管道格式化字符

不可管道格式化字符

在我的机器上,该命令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

相关内容