Answers:
要禁用分页但保留输出,请使用:
\pset pager off
要记住此设置,请将其添加到〜/ .psqlrc中。
请参见psql手册。
在旧版的Pg上,这只是一个切换,因此 \pset pager
要完全禁止查询输出,请\o /dev/null
在psql
脚本中使用。
要取消显示psql
的信息输出,请在-q
或QUIET=1
环境中运行它。
要产生结果并将其丢弃,可以使用以下方法重定向stdout
到/dev/null
:
psql db -f sql.sql >/dev/null
您可以使用以下命令重定向stdout和stderr:
psql db -f sql.sql >&/dev/null
但我不建议这样做,因为它会丢弃可能警告您某些错误的错误信息。您还会产生结果并将其丢弃,这效率很低;您最好不要只通过调整查询来首先生成它们。
bash是一个外壳,有2个流,您可以重定向输出数据:stdout和stderr,因为此输出需要重定向到某个地方,所以linux有一个特定的“丢弃所有”节点,可以通过/ dev / null到达。您发送到那里的所有内容都将消失在空白中。
(shell也有一个输入流,但是由于您要求抑制输出,因此在这里我将忽略它)
这些流由数字表示:1表示标准输出,2表示标准错误。
因此,如果您只想重定向标准输出,则可以使用<
and >
运算符(基本上,它指向的位置就是数据流向的位置)
假设我们要禁止stdout(重定向到/ dev / null):
psql db -f sql.sql > /dev/null
如您所见,这是默认的stdout,如果要使用要编写的流号,则没有流号已被使用
psql db -f sql.sql 1> /dev/null
现在,如果您想抑制stderror(流编号2),则可以使用
psql db -f sql.sql 2> /dev/null
您也可以将一个流重定向到另一个流,例如将stderror重定向到stdout,如果要将所有输出保存在常规和错误的地方,这很有用。
psql db -f sql.sql 2>&1 > log.txt
请注意,您之间不能有空格 2>&1
最后,有时最有趣的是,您可以通过使用来抑制所有输出&>
,因为当您希望它“完全安静”时
psql db -f sql.sql &> /dev/null
psql -U user -P pager=off -d database -c 'SQL';
PAGER="/dev/null" psql db -P pager=always -f sql.sql
使它始终终止输出。