Вимкніть пейджер для інтерактивного виводу psql


36

Ми перейшли з PostgreSQL 8.3 до 9.0. Можливо, це нова функція або, можливо, просто зміна конфігурації, але тепер, коли вихід з команд (наприклад, \d tablename) перевищує видимий вертикальний простір, psql, здається, передає вихід через щось подібне до less. Я не міг знайти спосіб відключити цю поведінку. Будь-яка порада? Спасибі.

PS Я прокручую буфер за допомогою PuTTY, Shift+PgUp/PgDnтому мені не потрібна сторінка psql. Плюс до цього, коли я натискаю qв підкачці psql, його вихід повністю зникає з екрана (як і після запуску lessв bash), що неправильно з точки зору загальних випадків використання.


Якщо ви з Google просто намагаєтеся прокрутити пейджер, це Space- не n або PgDn або стрілка вниз, як я намагався.
Номенон

Відповіді:


35

На це є документація.

З розділу \ pset керівництва psql :

пейджер

Керує використанням програми пейджера для виведення запитів та довідки psql. Якщо встановлена ​​змінна середовище PAGER, вихід виводиться на вказану програму. В іншому випадку використовується платформа за замовчуванням (наприклад, більше).

Коли параметр пейджера вимкнено, програма пейджера не використовується. Коли опція пейджера увімкнена, пейджер використовується, коли це доречно, тобто коли вихід знаходиться в терміналі і не поміститься на екрані. Параметр пейджера також може бути встановлений завжди, що спричиняє використання пейджера для всіх висновків терміналу незалежно від того, підходить він на екран. \ pset пейджер без значення вмикає та вимикає використання пейджера.


9
Дякую. Повний зовнішній вигляд рішення , як: psql -P pager.
Юрій Ушаков

3
Я думаю, ви навіть можете помістити опцію у свій файл ~ / .psqlrc, щоб уникнути необхідності вводити це кожен раз.
Свен

У будь-якому разі передавати аргументи менше?
snapfractalpop

3
Я також зіткнувся з проблемою Юрія. Як описано вище. Ви можете використовувати \pset pagerв psql, щоб увімкнути, чи йде вихід на пейджер. Однак ви повинні мати можливість використовувати пейджер і не мати зникнення результату з екрану, коли ви виходите. Відповідь - використовувати "більше" замість "менше" як пейджер. Ви можете це зробити, встановивши змінну середовища PAGER у своїй оболонці або додавши змінну середовища PAGER у файл ~ / .psqlrc файл.
Майкл Раш

4
@MichaelRush: Набір PAGERдля less -Xі він не очистить екран.
Свен

21

Спробуйте перемикач:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.

3
Також \pset pager [on|off]за постійний результат.
лолеск



0

Щоб вимкнути пейджер при використанні psqlв оболонці:

psql -P pager=off ...

Ви також можете експортувати порожню PAGERзмінну середовища, тому вам не потрібно додавати параметр до кожного оператора. Він буде встановлений, поки ви не закриєте поточну оболонку.

export PAGER=
psql ...

Нарешті, вирішення, яке може бути простіше запам’ятати: передайте висновок наскрізь cat, що відключить пейджер за замовчуванням

psql ... | cat

0

Найкращим підсумком є ​​встановлення змінної середовища для пейджера, наприклад

PAGER='less -X' psql

або встановити його один раз

export PAGER='less -X'

потім біжи

psql

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.