Odpowiedzi:
Aby wyłączyć paginację, ale zachować dane wyjściowe, użyj:
\pset pager off
Aby zapamiętać to ustawienie, dodaj je do swojego ~ / .psqlrc .
Zobacz podręcznik psql .
W starszych wersjach Pg był to tylko przełącznik, więc \pset pager
Aby całkowicie pominąć zapytanie, użyj \o /dev/null
w swoim psql
skrypcie.
Aby ukryć psql
informacje wyjściowe, uruchom je w środowisku -q
lub ustaw QUIET=1
w nim.
Aby uzyskać wyniki i je wyrzucić, możesz przekierować stdout
do /dev/null
:
psql db -f sql.sql >/dev/null
Możesz przekierować zarówno stdout, jak i stderr za pomocą:
psql db -f sql.sql >&/dev/null
ale nie polecam tego, ponieważ spowoduje to odrzucenie informacji o błędach, które mogą ostrzec Cię, że coś jest nie tak. Produkujesz również wyniki i odrzucasz je, co jest nieefektywne; lepiej nie tworzyć ich w pierwszej kolejności, dostosowując zapytania.
Tego też szukałem, znalazłem drogę w podobnym pytaniu na ServerFault:
psql -P pager=off <other params>
wyłącza stronicowanie, bez tłumienia wyjścia.
bash, będąc powłoką , ma 2 strumienie, które możesz przekierować dane wyjściowe: stdout i stderr, ponieważ to wyjście musi być gdzieś przekierowane, linux ma specyficzny węzeł „odrzucaj wszystko” dostępny przez / dev / null . Wszystko, co tam wyślesz, po prostu zniknie w pustce.
(powłoki również mają strumień wejściowy, ale zignoruję to tutaj, ponieważ poprosiłeś o wyciszenie wyjścia)
Te strumienie są reprezentowane przez liczby: 1 dla stdout i 2 dla stderr.
Więc jeśli chcesz przekierować tylko stdout, zrobiłbyś to za pomocą operatorów <
i >
(w zasadzie tam, gdzie wskazuje, jest miejsce, do którego przepływają dane)
załóżmy, że chcemy zablokować stdout (przekierowanie do / dev / null):
psql db -f sql.sql > /dev/null
Jak widać, jest to standardowe wyjście jest domyślne, żaden numer strumienia nie został użyty, jeśli chcesz użyć numeru strumienia, który napiszesz
psql db -f sql.sql 1> /dev/null
Teraz, jeśli chcesz stłumić błąd stderror (strumień numer 2), użyjesz
psql db -f sql.sql 2> /dev/null
Możesz także przekierować jeden strumień do innego, na przykład stderror na stdout, co jest przydatne, jeśli chcesz gdzieś zapisać wszystkie dane wyjściowe, zwykłe i błędy.
psql db -f sql.sql 2>&1 > log.txt
Pamiętaj, że między nimi nie może być spacji 2>&1
Wreszcie, i czasami najbardziej interesujący jest fakt, że możesz wyłączyć wszystkie wyjścia za pomocą &>
, gdy chcesz, aby był `` idealnie cichy ''
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
sprawić, by zawsze zabijał wyjście.