Tắt máy nhắn tin cho đầu ra tương tác của psql


35

Chúng tôi đã chuyển từ PostgreSQL 8.3 sang 9.0. Có lẽ đó là một tính năng mới hoặc có lẽ chỉ là thay đổi cấu hình, nhưng bây giờ khi đầu ra từ các lệnh (như, \d tablename) vượt quá không gian dọc có thể nhìn thấy, psql dường như dẫn đầu ra thông qua một cái gì đó tương tự less. Tôi không thể tìm cách tắt hành vi này. Có lời khuyên nào không? Cảm ơn.

PS Tôi đang cuộn bộ đệm bằng PuTTY Shift+PgUp/PgDnvì vậy tôi không cần phân trang của psql. Thêm vào đó, khi tôi nhấn qvào phân trang của psql, đầu ra của nó hoàn toàn biến mất khỏi màn hình (giống như sau khi chạy lesstrong bash), điều này sai từ quan điểm về các trường hợp sử dụng chung.


Nếu bạn ở đây từ Google chỉ cố gắng cuộn qua máy nhắn tin, thì đó Space- không phải n hoặc PGDn hoặc mũi tên xuống như tôi đã thử.
Noumenon

Câu trả lời:


35

Có tài liệu cho điều đó.

Từ phần \ pset của hướng dẫn sử dụng psql :

máy nhắn tin

Kiểm soát việc sử dụng chương trình máy nhắn tin cho đầu ra trợ giúp truy vấn và psql. Nếu PAGER biến môi trường được đặt, đầu ra được dẫn đến chương trình đã chỉ định. Mặt khác, một mặc định phụ thuộc vào nền tảng (chẳng hạn như nhiều hơn) được sử dụng.

Khi tùy chọn máy nhắn tin tắt, chương trình máy nhắn tin không được sử dụng. Khi tùy chọn máy nhắn tin được bật, máy nhắn tin được sử dụng khi thích hợp, nghĩa là khi đầu ra ở một thiết bị đầu cuối và sẽ không vừa với màn hình. Tùy chọn máy nhắn tin cũng có thể được đặt thành luôn, điều này khiến máy nhắn tin được sử dụng cho tất cả đầu ra đầu cuối bất kể nó có vừa với màn hình hay không. \ pset pager mà không có giá trị để bật và tắt sử dụng máy nhắn tin.


9
Cảm ơn bạn. Các giải pháp hoàn chỉnh trông như : psql -P pager.
Yuri Ushakov

3
Tôi đoán bạn thậm chí có thể đặt một tùy chọn trong tệp ~ / .psqlrc của mình để tránh phải nhập cái này mỗi lần.
Sven

Dù sao để vượt qua đối số để ít?
snapfractalpop

3
Tôi cũng gặp phải vấn đề của Yuri. Như mô tả ở trên. Bạn có thể sử dụng \pset pagertrong psql để chuyển đổi cho dù đầu ra đi đến máy nhắn tin. Tuy nhiên, bạn sẽ có thể sử dụng máy nhắn tin và không để đầu ra biến mất khỏi màn hình khi bạn thoát. Câu trả lời là sử dụng 'nhiều hơn thay vì' ít hơn 'như máy nhắn tin. Bạn có thể làm điều đó bằng cách đặt biến môi trường PAGER trong trình bao của bạn hoặc bằng cách thêm biến môi trường PAGER vào tệp ~ / .psqlrc.
Michael Rush

4
@MichaelRush: Đặt PAGERthành less -Xvà nó sẽ không xóa màn hình.
Sven

21

Hãy thử chuyển đổi:

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

3
Cũng \pset pager [on|off]cho kết quả không đổi.
lolesque 16/07/2015

4

Tắt máy nhắn tin với

\pset pager off

Đây chỉ đơn giản là câu trả lời được chấp nhận cho tôi. Cảm ơn bạn.
Nam G VU


0

Để tắt máy nhắn tin khi sử dụng psqltrong trình bao:

psql -P pager=off ...

Bạn cũng có thể xuất một PAGERbiến môi trường trống , vì vậy bạn không cần thêm tùy chọn vào mỗi câu lệnh. Nó sẽ được đặt cho đến khi bạn đóng vỏ hiện tại của bạn.

export PAGER=
psql ...

Cuối cùng, một cách giải quyết có thể dễ nhớ hơn: dẫn đầu ra qua cat, điều này sẽ vô hiệu hóa máy nhắn tin mặc định

psql ... | cat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.