bash, essendo un shell, ha 2 streams si può reindirizzare i dati di uscita: stdout e stderr, perché questa uscita deve essere reindirizzato qualche parte, Linux ha uno specifico 'scartare tutto' nodo raggiungibile attraverso /dev/null. Tutto ciò che invii lì sparirà nel vuoto.
(conchiglie hanno anche un flusso di input ma ignoreremo questo qui da quando lei ha chiesto la soppressione di uscita)
Questi flussi sono rappresentati da numeri: 1 per stdout e 2 per stderr.
Quindi, se si desidera reindirizzare solo stdout faresti che con le <
e >
operatori (fondamentalmente in cui si indica è dove i flussi di dati a)
supponiamo che vogliamo sopprimere stdout (reindirizzamento a/dev/null):
psql db -f sql.sql > /dev/null
Come si può vedere si tratta di stdout è predefinita, nessun numero flusso è stato utilizzato se si volesse utilizzare il numero di flusso si sarebbe scrivere
psql db -f sql.sql 1> /dev/null
Ora, se si desidera eliminare stderror (numero flusso 2), utilizza
psql db -f sql.sql 2> /dev/null
Si potrebbe anche reindirizzare un flusso a un altro, per esempio stderror sullo standard output, che è utile se vuoi salvare tutto l'output da qualche parte, regolare ed errori.
psql db -f sql.sql 2>&1 > log.txt
si badi bene non ci possono essere spazi tra 2>&1
Infine, e talvolta più interessante è il fatto che è possibile sopprimere tutto l'output utilizzando &>
, per quando si desidera e 'assolutamente tranquilla'
psql db -f sql.sql &> /dev/null
Mentre questa informazione è il suono in linea di principio, non funziona affatto in questo caso specifico, perché psql non invia i messaggi informativi a stderr. Sono mescolati con i dati sullo stdout. –
All'improvviso mi rendo conto che il tuo punto è che il caso "&>" finale può essere usato dall'OP per fermare il cercapersone, sopprimendo tutto l'output. Toglierò il mio downvote se modifichi la risposta in qualsiasi modo. –