Ответы:
Чтобы отключить нумерацию страниц, но сохранить вывод, используйте:
\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
но я не рекомендую этого, поскольку это приведет к удалению информации об ошибках, которая может предупредить вас, что что-то идет не так. Вы также производите результаты и выбрасываете их, что неэффективно; вам лучше просто не производить их в первую очередь, корректируя свои запросы.
Я тоже искал это, я нашел путь в аналогичном вопросе о ServerFault:
psql -P pager=off <other params>
отключает пейджинговую вещь, не подавляя вывод.
bash, являясь оболочкой , имеет 2 потока, которые вы можете перенаправить на эти выходные данные: stdout и stderr, поскольку этот вывод необходимо куда-то перенаправить, у linux есть специальный узел «сбросить все», доступный через / dev / null . Все, что вы отправите туда, просто исчезнет в пустоте.
(оболочки также имеют входной поток, но я проигнорирую это здесь, так как вы просили подавить вывод)
Эти потоки представлены числами: 1 для stdout и 2 для stderr.
Так что если вы хотите , чтобы перенаправить только стандартный вывод вы бы сделать это с <
и >
операторы ( в основном , где он указывает на то , где потоки данных в)
предположим, что мы хотим подавить стандартный вывод (перенаправление в / 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
чтобы это всегда убивало вывод.