Verwenden Sie: Deaktivieren Sie die Paginierung, behalten Sie jedoch die Ausgabe bei:
\pset pager off
Um sich diese Einstellung zu merken, fügen Sie sie Ihrem ~ / .psqlrc hinzu .
Siehe das psql-Handbuch .
Bei älteren Versionen von Pg war es also nur ein Umschalten \pset pager
Verwenden Sie \o /dev/null
in Ihrem psql
Skript , um die Ausgabe von Abfragen vollständig zu unterdrücken .
Um die psql
Informationsausgabe zu unterdrücken , führen Sie sie mit der Umgebung aus -q
oder legen Sie sie fest QUIET=1
.
Um Ergebnisse zu produzieren und sie wegzuwerfen können Sie umleiten stdout
zu /dev/null
mit:
psql db -f sql.sql >/dev/null
Sie können sowohl stdout als auch stderr umleiten mit:
psql db -f sql.sql >&/dev/null
aber ich empfehle das nicht, da es Fehlerinformationen wegwirft, die Sie warnen könnten, dass etwas nicht richtig läuft. Sie produzieren auch Ergebnisse und werfen sie weg, was ineffizient ist. Sie sind besser dran, sie erst gar nicht zu produzieren, indem Sie Ihre Abfragen anpassen.
PAGER="/dev/null" psql db -P pager=always -f sql.sql
dafür sorgen, dass die Ausgabe immer beendet wird.Ich habe auch danach gesucht und den Weg in einer ähnlichen Frage zu ServerFault gefunden:
schaltet das Paging-Ding aus, ohne die Ausgabe zu unterdrücken.
quelle
Hier ist eine weitere Option. Es hat den Vorteil, dass Sie sich keine psql-Optionsnamen usw. merken müssen.
quelle
Als Shell verfügt bash über zwei Streams, mit denen Sie diese Ausgabedaten umleiten können: stdout und stderr. Da diese Ausgabe irgendwo umgeleitet werden muss, verfügt Linux über einen bestimmten Knoten, der über / dev / null erreichbar ist . Alles, was Sie dorthin senden, verschwindet einfach in der Leere.
(Shells haben auch einen Eingabestream, aber ich werde dies hier ignorieren, da Sie darum gebeten haben, die Ausgabe zu unterdrücken.)
Diese Streams werden durch Zahlen dargestellt: 1 für stdout und 2 für stderr.
Wenn Sie also nur stdout umleiten möchten, tun Sie dies mit den Operatoren
<
und>
(im Grunde genommen zeigen die Daten darauf, wohin sie fließen).Angenommen, wir möchten stdout unterdrücken (umleiten nach / dev / null):
psql db -f sql.sql > /dev/null
Wie Sie sehen, ist dies standardmäßig stdout. Es wurde keine Stream-Nummer verwendet, wenn Sie die Stream-Nummer verwenden möchten, die Sie schreiben möchten
psql db -f sql.sql 1> /dev/null
Wenn Sie nun stderror (Stream Nummer 2) unterdrücken möchten, würden Sie verwenden
psql db -f sql.sql 2> /dev/null
Sie können auch einen Stream zu einem anderen umleiten, z. B. stderror zu stdout. Dies ist nützlich, wenn Sie alle Ausgaben irgendwo speichern möchten, regulär und fehlerhaft.
psql db -f sql.sql 2>&1 > log.txt
wohlgemerkt kann es keine Leerzeichen dazwischen geben
2>&1
Schließlich und manchmal am interessantesten ist die Tatsache, dass Sie alle Ausgaben unterdrücken können, indem Sie verwenden
&>
, wenn Sie es "vollkommen leise" wollen.psql db -f sql.sql &> /dev/null
quelle
quelle
quelle