bash, ein shell ist, verfügt über 2 streams Sie, dass die Ausgangsdaten umleiten: stdout und stderr, da dieser Ausgang irgendwo umgeleitet werden muss, Linux hat einen bestimmten Knoten erreichbar durch /dev/null 'alles wegwerfen. Alles, was du dorthin schickst, wird einfach in der Leere verschwinden.
(Schalen auch einen Eingangsstrom, aber ich werde das hier ignorieren, da Sie zur Unterdrückung der Ausgabe gefragt)
Diese Ströme durch Zahlen dargestellt werden: 1 für stdout und 2 für stderr.
Also, wenn Sie nur umleiten möchten stdout würden Sie tun, dass mit den <
und >
Operatoren (im Grunde, wo er zeigt, wo die Daten fließt)
nehmen wir an stdout zu unterdrücken wollen (Umleitung auf/dev/null):
psql db -f sql.sql > /dev/null
Wie Sie sehen, ist dies stdout Standard ist, kein Strom Nummer verwendet, wenn Sie die Strom-Nummer verwenden wollte würden Sie schreiben
psql db -f sql.sql 1> /dev/null
Nun, wenn Sie stderror (Strom-Nummer 2) zu unterdrücken wollen, dann würden Sie verwenden
psql db -f sql.sql 2> /dev/null
Sie auch einen Stream auf eine andere umleiten könnte zum Beispiel stderror auf stdout, das ist nützlich, wenn Sie alle Ausgaben irgendwo, regelmäßig und Fehler speichern möchten.
psql db -f sql.sql 2>&1 > log.txt
Geist Sie können es nicht sein Räume zwischen 2>&1
Schließlich und manchmal besonders interessant ist die Tatsache, dass Sie die gesamte Ausgabe &>
durch die Verwendung unterdrücken kann, denn wenn Sie es wollen ‚vollkommen ruhig‘
psql db -f sql.sql &> /dev/null
Während diese Informationen grundsätzlich Sound ist, es gar nicht arbeiten in diesem speziellen Fall, weil psql nicht schickt die informativen Nachrichten an stderr. Sie sind mit Daten auf stdout vermischt. –
Plötzlich merke ich, dass Ihr Punkt ist, dass der letzte '&' 'Fall vom OP verwendet werden kann, um den Pager zu stoppen, indem die gesamte Ausgabe unterdrückt wird. Ich werde meinen Downvote entfernen, wenn Sie Ihre Antwort in irgendeiner Weise ändern. –