Psql'nin etkileşimli çıktısı için çağrı cihazını kapat


35

PostgreSQL 8.3'ten 9.0'a geçtik. Belki de yeni bir özellik veya belki de sadece bir yapılandırma değişikliğidir, ancak şimdi komutlardan gelen çıktılar (örn. Gibi \d tablename) dikey düşey alanı aştığında, psql çıktıyı benzer bir şeyden geçiriyor gibi görünmektedir less. Bu davranışı kapatmanın bir yolunu bulamadım. Herhangi bir tavsiye? Teşekkürler.

PS PuTTY'leri kullanarak arabellek kaydırıyorum, Shift+PgUp/PgDnbu yüzden psql'in disk belleği kullanmaya ihtiyacım yok. Artı, qpsql'nin disk belleği birimine bastığımda, çıktı genel ekran lessdurumları açısından yanlış olan ekrandan tamamen kayboluyor (tıpkı bashta çalıştırdıktan sonra olduğu gibi ).


Google’dan sadece çağrı cihazını kaydırmaya çalışıyorsanız, Spacedenedim - n veya PgDn veya aşağı ok değil.
Noumenon

Yanıtlar:


35

Bunun için belgeler var.

Psql kılavuzunun \ pset bölümünden :

çağrı cihazı

Sorgu ve psql yardım çıktısı için çağrı cihazı kullanımını kontrol eder. PAGER ortam değişkeni ayarlanmışsa, çıkış belirtilen programa aktarılır. Aksi halde, platforma bağımlı bir varsayılan (daha fazlası gibi) kullanılır.

Çağrı cihazı seçeneği kapalıyken çağrı cihazı programı kullanılmaz. Çağrı cihazı seçeneği açıkken, çağrı cihazı uygun olduğunda, yani çıktı bir terminale olduğunda ve ekrana sığmadığında kullanılır. Çağrı cihazı seçeneği, her zaman için de ayarlanabilir; bu, çağrı cihazının, ekrana sığıp sığmadığına bakılmaksızın, tüm terminal çıkışı için kullanılmasına neden olur. Bir değer olmadan \ pset çağrı cihazı çağrı cihazı kullanımını açar ve kapatır.


9
Teşekkür ederim. Komple çözüm görünüyor gibi: psql -P pager.
Yuri Ushakov

3
Sanırım bunu her seferinde girmek zorunda kalmamak için ~ / .psqlrc dosyasına bir seçenek bile koyabilirsiniz.
Sven

Her neyse, argümanları daha azına aktarmak için?
snapfractalpop

3
Yuri'nin problemine de rastladım. Yukarıda tanımlandığı gibi. Sen kullanabilirsiniz \pset pagerçıktı çağrı cihazı gider durumunu değiştirmek için psql'de. Ancak, bir çağrı cihazı kullanabilmeli ve çıkarken çıktıların ekrandan kaybolmamasını sağlamalısınız. Cevap, çağrı cihazı olarak 'daha az' yerine 'daha' kullanmaktır. Bunu, kabuğundaki PAGER ortam değişkenini ayarlayarak veya bir ~ / .psqlrc dosyasına bir PAGER ortam değişkeni ekleyerek yapabilirsiniz.
Michael Rush

4
@MichaelRush: Set PAGERiçin less -Xve ekranı temizlemez.
Sven

21

Değiştiriciyi deneyin:

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

3
Ayrıca \pset pager [on|off]sürekli sonuç için.
lolesque

4

Çağrı cihazını ile kapat

\pset pager off

Bu sadece benim için kabul edilmiş bir cevap. Teşekkür ederim.
Nam G VU

3

Davranışı korumak için aşağıdaki kodu ~ / .psqlrc biçiminde ekleyin.

\ pset çağrı cihazı kapalı


0

psqlKabuk içinde kullanırken çağrı cihazını kapatmak için :

psql -P pager=off ...

Boş bir PAGERortam değişkenini de dışa aktarabilirsiniz , böylece seçeneği her ifadeye eklemeniz gerekmez. Siz mevcut kabuğunuzu kapatana kadar ayarlı kalacaktır.

export PAGER=
psql ...

Son olarak, hatırlanması daha kolay olabilecek bir geçici çözüm: catvarsayılan çağrı cihazını devre dışı bırakacak olan çıkışı yönlendirmek

psql ... | cat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.