回答:
ページネーションを無効にして出力を保持するには、以下を使用します。
\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に。そこに送ったものはすべて、空に消えるだけです。
(シェルにも入力ストリームがありますが、出力の抑制を要求したため、ここでは無視します)
これらのストリームは番号で表されます。1はstdout、2はstderrです。
したがって、stdoutだけをリダイレクトしたい場合は、<
and >
演算子を使用してそれを行います(基本的に、それが指す場所はデータのフロー先です)
stdoutを抑制したいとします(/ dev / nullにリダイレクトします)。
psql db -f sql.sql > /dev/null
これが標準出力がデフォルトであることを確認できるように、書き込みたいストリーム番号を使用したい場合、ストリーム番号は使用されていません。
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
がそれを常に出力を殺すようにする必要があると思います。