Setiap orang yang menggunakan psql
juga menggunakan less
pager. Meskipun berfungsi dengan baik, tidak ada dukungan khusus untuk data tabular. Saya menemukan beberapa proyek, namun tidak ada yang cukup baik untuk tujuan ini. Jadi saya memutuskan untuk menulis pager kecil khusus untuk digunakan sebagai pager psql
.
Pager ini juga dapat digunakan dari klien baris perintah berikut:
mysql
sqlite
pgcli
monetdb
Trino (formerly Presto SQL)
usql
sqlcl
(untuk Oracle)nushell
mcview
atau FoxPro
- http://okbob.blogspot.com/2019/12/pspg-themes-what-you-use-it.html pspg
dapat dengan mudah diinstal dari repositori Debian (Ubuntu). Repositori RedHat (Fedora) juga berisi pspg
:
# Debian (Ubuntu)
sudo apt-get install pspg
# RedHat (Fedora)
sudo dnf install pspg
Konfigurasi dasarnya sangat sederhana - cukup atur variabel lingkungan sistem PSQL_PAGER
:
export PSQL_PAGER='pspg -X -b'
Instalasi asli pada MS Windows tidak didukung, tetapi pspg
berfungsi dengan baik di dalam wsl2
. Di dalam lingkungan wsl2, instalasinya sama seperti pada sistem Linux yang digunakan.
Instalasi di macOS/homebrew mudah dilakukan dengan brew install pspg
.
[pavel@localhost ~]$ pspg --help
pspg is a Unix pager designed for table browsing.
Usage:
pspg [OPTION] [file]
General options:
--about about authors
--help show this help
-V, --version show version
--info show info about libraries and system
--direct-color force direct-color terminal mode
-f, --file=FILE open file
-F, --quit-if-one-screen
quit if content is one screen
--clipboard-app=NUM specify app used by copy to clipboard (1, 2, 3, 4)
--esc-delay=NUM specify escape delay in ms (-1 inf, 0 not used, )
--interactive force interactive mode
--ignore_file_suffix don't try to deduce format from file suffix
--ni not interactive mode (only for csv and query)
--no-watch-file don't watch inotify event of file
--no-mouse don't use own mouse handling
--no-progressive-load don't use progressive data load
--no-sigint-search-reset
without reset searching on sigint (CTRL C)
--no-sleep without waits against flickering
--no_xterm_mouse_mode don't use optional xterm mouse mode
--only-for-tables use std pager when content is not table
--on-sigint-exit exit on sigint(CTRL C or Escape)
--pgcli-fix try to fix some pgcli related issues
--querystream read queries from stream forever
--quit-on-f3 exit on F3 like mc viewers
--rr=ROWNUM rows reserved for specific purposes
--stream read input forever
-X, --reprint-on-exit preserve content after exit
Output format options:
-a, --ascii force ascii
-b, --blackwhite black-white style
-s, --style=N set color style number (0..22)
--bold-labels row, column labels use bold font
--bold-cursor cursor use bold font
--border type of borders (0..2)
--double-header header separator uses double lines
--force-uniborder replace ascii borders by unicode borders
--highlight-odd-rec highlights odd records (when it is supported by style)
--hide-header-line hides header line (between column names and data)
--ignore-short-rows rows with wrong column numbers are ignored
--null=STRING STRING used instead NULL
Searching options
-g --hlite-search, -G --HILITE-SEARCH
don't highlight lines for searches
-i --ignore-case ignore case in searches that do not contain uppercase
-I --IGNORE-CASE ignore case in all searches
Interface options:
-c, --freezecols=N freeze N columns (0..9)
--less-status-bar status bar like less pager
--line-numbers show line number column
--menu-always show top bar menu every time
--no-bars, --no-commandbar, --no-topbar
don't show bottom, top bar or both
--no-cursor row cursor will be hidden
--no-last-row-search don't use the last pattern when starting a new search
--no-scrollbar don't show scrollbar
--no-sound don't use beep when scroll is not possible
--tabular-cursor cursor is visible only when data has table format
--vertical-cursor show vertical column cursor
Input format options:
--csv input stream has csv format
--csv-separator char used as field separator
--csv-header [on/off] specify header line usage
--skip-columns-like="SPACE SEPARATED STRING LIST"
columns with substr in name are ignored
--csv-trim-width=NUM trim value after NUM chars
--csv-trim-rows=NUM trim value after NUM rows
--tsv input stream has tsv format
On exit options:
--on-exit-reset sends reset terminal sequence "33c"
--on-exit-clean sends clean terminal sequence " 33[2J"
--on-exit-erase-line sends erase line terminal sequence "33[2Kr"
--on-exit-sgr0 sends sgr0 terminal sequence " 33[0;10m"
Watch mode options:
-q, --query=QUERY execute query
-w, --watch time the query (or read file) is repeated every time (sec)
Connection options:
-d, --dbname=DBNAME database name
-h, --host=HOSTNAME database server host (default: "local socket")
-p, --port=PORT database server port (default: "5432")
-U, --username=USERNAME database user name
-W, --password force password prompt
Debug options:
--log=FILE log debug info to file
--wait=NUM wait NUM seconds to allow attach from a debugger
pspg berbagi banyak perintah kunci dengan less pager atau editor vi.
Opsi juga dapat diteruskan dalam variabel lingkungan PSPG
. File konfigurasi diproses terlebih dahulu. Opsi dari variabel PSPG
diproses setelah langkah tersebut dan opsi baris perintah diproses di akhir. Satu opsi dapat diproses beberapa kali, nilai terakhir yang menang.
Nama | Penggunaan |
---|---|
PSPG | dapat menampung opsi yang sama seperti baris perintah |
PSPG_CONF | jalur ke file konfigurasi |
PSPG_HISTORY | path ke file file riwayat readline pspg |
Nama bidang dapat berbeda dengan opsi baris perintah terkait:
ascii_menu = false
bold_labels = false
bold_cursor = false
ignore_case = false
ignore_lower_case = false
no_cursor = false
no_sound = false
no_mouse = false
less_status_bar = false
no_highlight_search = false
no_highlight_lines = false
force_uniborder = false
show_rownum = false
without_commandbar = false
without_topbar = false
vertical_cursor = false
on_sigint_exit = false
no_sigint_search_reset = false
double_header = false
quit_on_f3 = false
pgcli_fix = false
xterm_mouse_mode = true
show_scrollbar = true
menu_always = false
empty_string_is_null = true
last_row_search = true
progressive_load_mode = true
highlight_odd_rec = false
hide_header_line = false
on_exit_reset = false
on_exit_clean = false
on_exit_erase_line = false
on_exit_sgr0 = false
direct_color = false
theme = 16
border_type = 2
default_clipboard_format = 0
clipboard_app = 0
hist_size = 500
esc_delay = -1
Kode | Nama |
---|---|
0 | hitam & putih |
1 | Komandan Tengah Malam seperti |
2 | FoxPro suka |
3 | Pdmenu suka |
4 | Tema putih |
5 | Suka sekali |
6 | PCFdan suka |
7 | Tema hijau |
8 | Tema biru |
9 | Kata Sempurna seperti |
10 | Tema biru kontras rendah |
11 | Mode sian gelap/hitam |
12 | Paradoks seperti |
13 | gaya retro dBase IV |
14 | gaya retro dBase IV (label Magenta) |
15 | Tema merah putih |
16 | Tema sederhana |
17 | Tema gelap tersolarisasi |
18 | Tema cahaya tersolarisasi |
19 | Tema ringan Gruvbox |
20 | Tema Cahaya Tao |
21 | Tema FlatWhite |
22 | Tema pipa relasional |
23 | Tema Warna Kertas |
lihat http://okbob.blogspot.cz/2017/07/i-hope-so-every-who-uses-psql-uses-less.html
Tema dapat dikustomisasi melalui templat dasar dan menu yang merujuk pada tema bawaan. File tema khusus harus disimpan dalam direktori dengan konfigurasi pspg
. Nama file ini harus .pspg_theme_xxx. Tema khusus dapat dipilih dengan opsi baris perintah --custom-style=name
atau dengan perintah ctheme name
.
Contoh file tema khusus (bernama .pspg_theme_mc2
(dapat diaktifkan dengan perintah ctheme mc2
)):
template = 1
template_menu = 3
background = black, white
data = black, white
label = black, white, italic, bold
border = #000000, white
footer = lightgray, white
cursor_data = blue, white, italic, bold, dim, reverse
cursor_border = blue, blue , italic, bold, dim, reverse
cursor_label = blue, white, italic, bold, dim, reverse
cursor_footer = blue, white, italic, bold, dim, reverse
cursor_bookmark = red, white, italic, bold, dim, reverse
cross_cursor = white, blue, italic, bold
cross_cursor_border = brightblue, blue
status_bar = black, lightgray
title = black, lightgray
scrollbar_arrows = black, white
scrollbar_background = lightgray, white
scrollbar_slider = white, gray
Beberapa kunci dapat ditandai dengan simbol *
. Kunci yang ditandai digunakan untuk catatan ganjil.
data* = black, lightgray
label* = black, lightgray, italic, bold
border* = #000000, lightgray
template
dan template_menu
menyetel nilai cadangan untuk kunci apa pun yang tidak ditentukan dalam tema khusus. template_menu
khususnya saat ini merupakan satu-satunya cara untuk menyesuaikan tampilan menu F9.
kunci | menyesuaikan |
---|---|
background | Warna latar belakang |
data | Teks data (non-header atau kolom beku). |
border | Warna perbatasan |
label | Labeli teks (header atau kolom beku). |
row_number | Nomor baris |
record_number | |
selected_area | |
footer | Footer hasil (non-tabular misalnya jumlah baris) |
cursor_data | Teks data yang disorot (non-header atau kolom beku). |
cursor_border | Warna batas yang disorot |
cursor_label | Teks label yang disorot (header atau kolom beku). |
cursor_row_number | Nomor baris yang disorot |
cursor_record_number | |
cursor_selected_area | |
cursor_footer | Footer hasil yang disorot (misalnya jumlah baris non-tabular) |
scrollbar_arrows | Scrollbar panah atas dan bawah |
scrollbar_background | Latar belakang bilah gulir "kosong". |
scrollbar_slider | Penggeser bilah gulir di atas latar belakang |
scrollbar_active_slider | Penggeser bilah gulir diambil dengan mouse |
title | Judul hasil (dalam perintah deskripsi psql) |
status_bar | Informasi kueri teratas dan lokasi kursor |
prompt_bar | |
info_bar | Teks info (misalnya "Tidak ditemukan" saat mencari) |
input_bar | Masukkan prompt dan teks (misalnya pencarian) |
error_bar | |
bookmark | |
bookmark_border | |
cursor_bookmark | |
cross_cursor | Sel yang disorot di persimpangan kursor horizontal dan vertikal |
cross_cursor_border | Batas pada perpotongan kursor horizontal dan vertikal |
matched_pattern | Hasil pencarian cocok dengan teks |
matched_pattern_nohl | |
matched_line | Baris yang berisi hasil pencarian |
matched_line_border | Perbatasan di baris hasil pencarian |
matched_pattern_cursor | Hasil pencarian yang disorot cocok dengan teks |
matched_line_vertical_cursor | Hasil pencarian yang disorot secara vertikal cocok dengan teks |
matched_line_vertical_cursor_border | Batas sel yang disorot secara vertikal dengan hasil pencarian cocok |
error |
Warna ANSI Black
, Red
, Green
, Brown
, Blue
, Magenta
, Cyan
, LightGray
, Gray
, BrightRed
, BrightGreen
, Yellow
, BrightBlue
, BrightMagenta
, BrightCyan
, White
, dan Default
akan ditampilkan saat emulator terminal Anda mengonfigurasinya. Alternatifnya, Anda dapat menentukan nilai hex RGB #FF00FF
.
Gaya adalah kombinasi apa pun dari: bold
, italic
, underline
, reverse
, standout
, dim
.
Jika format beberapa kunci tidak benar, maka baris ini diabaikan. Untuk debugging tema khusus sebaiknya memulai pspg
dengan opsi --log
. Informasi tentang definisi yang rusak disimpan dalam file log.
Kunci | Memerintah |
---|---|
0 , 1 , 2 , 3 , .., 9 | bekukan N kolom pertama |
KEY_UP , k | menavigasi mundur satu baris |
KEY_DOWN , j | menavigasi maju satu baris |
KEY_LEFT , h | gulir ke kiri |
KEY_RIGHT , l | gulir ke kanan |
Ctrl + KEY_LEFT | gulir satu karakter ke kiri |
Ctrl + KEY_RIGHT | gulir satu karakter ke kanan |
Shift + KEY_LEFT | gulir satu kolom ke kiri |
Shift + KEY_RIGHT | gulir satu kolom ke kanan |
Ctrl + Beranda , g | pergi ke awal file |
Ctrl + Akhir , G | pergi ke akhir file |
Alt + aku | pergi ke nomor baris |
H | pergi ke baris pertama jendela saat ini |
M | pergi ke setengah dari jendela saat ini |
L | pergi ke akhir jendela saat ini |
HALAMAN , Ctrl + b | mundur satu jendela |
NPAGE , Ctrl + f , spasi | maju satu jendela |
RUMAH , ^ | pergi ke awal baris, kolom pertama |
AKHIR , $ | pergi ke akhir baris, kolom terakhir |
Ctrl + e | gulir jendela ke bawah |
Ctrl + kamu | gulir jendela ke atas |
Ctrl + d | maju setengah jendela |
Ctrl + kamu | mundur setengah jendela |
S | menyimpan konten ke file |
/ | mencari pola yang akan membawa Anda ke kejadian berikutnya |
? | mencari pola yang akan membawa Anda ke kejadian sebelumnya |
N | untuk pertandingan selanjutnya |
N | untuk pertandingan berikutnya dalam arah sebaliknya |
C | pencarian kolom |
alternatif + / | mencari pola di dalam area yang dipilih |
alternatif + ? | pencarian mundur untuk pola di dalam area yang dipilih |
Alt + c | aktifkan (hidupkan, matikan) kursor garis gambar |
Alt + m | aktifkan (hidupkan, matikan) pengendali mouse sendiri |
Alt + n | menyalakan (menghidupkan, mematikan) nomor garis gambar |
Alt + v , klik dua kali pada header kolom | aktifkan (hidupkan, matikan) kursor kolom gambar |
Roda tombol mouse | gulir vertikal |
Roda tombol Alt + Mouse | gulir horizontal |
F9 | tampilkan menu |
q , F10 , Esc 0 | berhenti |
Alt + q | keluar dan cetak konten mentah (belum diformat). |
Alt + k , Alt + klik dua kali | beralih penanda |
Alt + j | buka penanda berikutnya |
Alt + saya | buka bookmark sebelumnya |
Alt + o | siram bookmark |
A | mengurutkan naik |
D | mengurutkan secara turun-temurun |
kamu | tidak disortir (diurutkan berdasarkan urutan asal) |
Ruang angkasa | berhenti/lanjutkan dalam mode tontonan |
R | Cat ulang layar dan segarkan file input |
masuk | ekspor baris, kolom, atau sel ke target default |
shift + kursor... | menentukan jangkauan |
F3 | mulai/selesai baris seleksi |
Shift + F3 | mulai/selesai blok seleksi |
Ctrl + seret mouse | mendefinisikan pemilihan baris, pada header kolom mendefinisikan pemilihan kolom |
Ctrl + o | tampilkan layar utama, tekan tombol apa saja untuk kembali ke pager lagi |
% , Ctrl + a | pilih semua |
Memerintah | Keterangan |
---|---|
N | pergi ke nomor baris |
+N | pergi ke N baris ke depan |
-N | pergi ke N baris mundur |
N+ | pergi ke nomor baris |
N- | pergi ke nomor baris dari akhir |
theme N | tetapkan nomor tema |
copy [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | menyalin data ke papan klip |
save [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | menyalin data ke papan klip |
order [N|column name] | urutkan berdasarkan kolom |
orderd [N|column name] | desc urutkan berdasarkan kolom |
sort [N|column name] | urutkan berdasarkan kolom |
sortd [N|column name] | desc urutkan berdasarkan kolom |
dsort [N|column name] | desc urutkan berdasarkan kolom (alias) |
rsort [N|column name] | desc urutkan berdasarkan kolom (alias) |
asc [N|column name] | urutkan berdasarkan kolom (alias) |
desc [N|column name] | desc urutkan berdasarkan kolom (alias) |
search [back] [selected] [column name] [string|"string"] | string pencarian dalam data |
Outputnya dapat dialihkan ke perintah apa pun ketika namanya dimulai dengan simbol pipa:
copy csv | less
Pager dapat diakhiri dengan menekan tombol q atau F10 atau Esc 0 . Dengan opsi --on-sigint-exit
maka pager ditutup dengan menekan tombol Ctrl + c atau Esc Esc .
pspg mendukung kemungkinan untuk menggunakan rangkaian tombol Esc , kunci sebagai pengganti kombinasi tombol Alt + . Interval antara menekan Esc dan tombol dibatasi oleh interval yang ditentukan oleh opsi esc-delay
atau opsi konfigurasi esc_delay
. Ini adalah waktu tunda maksimal dalam ms. Setelah interval ini, penekanan tunggal Esc diartikan sebagai Escape
. -1 berarti tidak terbatas, 0 menonaktifkan fitur ini.
Pencarian kolom tidak peka huruf besar-kecil setiap saat. Kolom yang dicari ditandai dengan kursor vertikal. Pola pencarian string terakhir yang tidak kosong digunakan ketika pola pencarian saat ini adalah string kosong. Pencarian dimulai setelah kolom vertikal terlihat atau pada kolom pertama yang terlihat tidak dibekukan (setelah beberapa pengguliran horizontal) atau pada kolom pertama. Setelah pencarian kolom terakhir dimulai dari yang pertama lagi.
Untuk dukungan clipboard, aplikasi clipboard harus diinstal: 1. wl-clipboard (Wayland), 2. xclip (xwindows), 3. pbcopy (MacOS) atau 4. clip.exe (WSL2).
pspg
coba terjemahkan simbol unicode '∅' ke NULL setiap saat. Jika Anda tidak menggunakan pengaturan khusus dengan pset null ...
, maka psql
menampilkan string kosong, bukan NULL. pspg
belum memiliki deteksi khusus (dalam rutinitas ekspor) untuk kasus ini. Anda harus memeriksa dan mengaktifkan atau menonaktifkan item menu Empty string is NULL
.
pspg
memiliki deteksi otomatis aplikasi clipboard. Sayangnya, deteksi ini tidak berfungsi untuk kasus yang sama. Anda dapat menentukan aplikasi dengan menentukan nomor (1,2,3,4) hingga opsi --clipboard-app
.
Format membuat perbedaan! pspg menyalin catatan dalam format CSV secara default, yang menggunakan pemisah koma dan memangkas spasi awal dan akhir . Gunakan "teks yang diformat" untuk menyalin keluaran kueri dengan tepat, atau pilih salah satu opsi lain yang tersedia.
V: [d/d d..d]
- kursor vertikal: (nomor kolom)/(kolom) (posisi char dari) .. (posisi char ke)FC: d
- panjang kolom yang dibekukan dalam karakterC: d..d/d
- data terlihat yang tidak dibekukan dalam karakter (dari .. hingga)/(total)L:[d + dd/d]
- garis (jumlah baris pertama yang terlihat) + (jumlah baris tampilan), (baris saat ini)/(baris)d%
- persentase data yang sudah ditampilkan Ini bekerja dengan baik dengan miller http://johnkerl.org/miller/doc/index.html
mlr --icsv --opprint --barred masukkan '' obce.csv | pspg --force-uniborder
Versi baru memiliki dukungan csv terintegrasi - cukup gunakan opsi --csv
.
Itu dapat diintegrasikan ke mc
/etc/mc/mc.ext
ke ~/.config/mc directory
Anda##csv regex/.csv Lihat=pspg -f %f --csv
mc
pspg
di Cygwin, maka beberapa pembekuan sementara pengguliran dilaporkan. Dalam hal ini, silakan gunakan opsi --no-sleep
. Saya melihat pengguliran lambat (melalui scrollbar) di dalam konsole (terminal KDE). Opsi --no-sleep
juga membantu. Hasil kueri dapat di-refresh setiap n detik. pspg
mengingat baris kursor, kemungkinan kursor vertikal, kemungkinan pemesanan. Penyegaran harus dihentikan sementara dengan menekan tombol spasi . Menekan tombol ini berulang kali akan mengaktifkan penyegaran kembali.
pspg
menggunakan API inotify jika tersedia, dan ketika file input diubah, maka pspg
segera membaca ulang file. Perilaku ini dapat dinonaktifkan berdasarkan opsi --no-watch-file
atau berdasarkan spesifikasi waktu tonton berdasarkan opsi --watch
.
pspg
dapat membaca aliran data tabular secara terus menerus dari pipa, bernama pipa atau dari file (dengan opsi --stream
atau dapat membaca aliran kueri dari pipa atau dari file (dengan opsi --querystream
). Dalam mode aliran, hanya data dalam format tabel yang dapat diproses, karena pspg
menggunakan baris kosong sebagai pemisah antar tabel.
Mode aliran kueri adalah urutan pernyataan SQL yang dipisahkan oleh char GS (Pemisah grup - 0x1D pada baris terpisah.
pavel@localhost ~]$ kucing < /dev/pts/3 > ~/pipe pilih 10 ^] pilih 20 ^] pilih * dari hal_kelas ^]
Anda harus menambahkan ke profil Anda:
#untuk Postgres 10 dan lebih lama ekspor PAGER = "pspg" #untuk postgres 11 dan yang lebih baru ekspor PSQL_PAGER="pspg" #atau "setenv PAGER pspg" ke .psqlrc
dan .psqlrc
set TENANG 1 pset unicode gaya garis pset batas 2 pset nol ∅ tidak disetel TENANG
beberapa kemungkinan konfigurasi:
-- Ganti pager dengan perintah :x dan :xx set x '\setenv PAGER lebih sedikit' set xx '\setenv PAGER 'pspg -bX --tanpa mouse'' :xx
LC_CTYPE
seharusnya benar. Terutama ketika Anda menggunakan batas unicode. ncurses tidak menampilkan batas unicode (diproduksi oleh psql
) tanpa pengaturan variabel ini yang benar. Dimungkinkan untuk memeriksa nilai 'C.UTF8'.
Saat Anda menggunakan opsi --only-for-tables
, maka
PAGER
ke pspg
dan PSQL_PAGER
ke less
atauPAGER
ke less
dan PSQL_PAGER
ke pspg
MariaDB [sakila]> pager pspg -s 14 -X --force-uniborder --quit-if-one-screen PAGER disetel ke 'pspg -s 14 -X --force-uniborder --quit-if-one-screen' MariaDB [sakila]> pilih sekarang(); MariaDB [sakila]> pilih * dari batas Nicer_but_slower_film_list 100;
Klien asli SQLite tidak menghasilkan keluaran yang diformat dengan baik, tetapi dapat dipaksa untuk menghasilkan format CSV - dan format ini dapat dibaca dengan baik untuk pspg
sqlite3 -csv -header testdb.db 'select * from foo2' | pspg --csv --csv-header=on --double-header
pgcli memerlukan opsi konfigurasi berikut ( ~/.config/pgcli/config
):
pager = /usr/bin/pspg --csv --rr=2 --quit-if-one-screen --ignore-case --csv-header on --pgcli-fix
table_format = csv
Pgcli versi lama memiliki keluaran yang sangat lambat dalam format tabel. Solusinya menggunakan format csv. Ini seharusnya tidak diperlukan pada versi saat ini ketika masalah kinerja telah diperbaiki. Opsi --pgcli-fix
memperbaiki impor format csv yang rusak sebagian yang dihasilkan oleh pgcli
. pgcli
versi modern tidak memerlukan format csv, dan tidak memerlukan opsi --pgcli-fix
.
pager = /usr/bin/pspg --rr=2 --quit-if-one-screen --ignore-case
Karena sqlcl
saat ini tidak mendukung opsi pager secara langsung, Anda dapat menggunakan alat seperti qsh untuk mengatasi masalah ini, atau menggunakan skrip pspg.sql dari repo ini.
Untuk menggunakan skrip, jalankan sqlcl
seperti yang ditunjukkan di bawah ini (penting untuk menyampaikan detail tty Anda saat ini):
$ TTY=$(tty) sqlcl system/system @/path/to/pspg.sql
Anda sekarang dapat memperoleh hasil kueri yang dikirim ke pspg
seperti ini:
SQL> pspg select * from user_tables;
pspg
mendukung default table_mode
: rounded
dan table_mode
: heavy
.
Konversi ke csv juga bisa digunakan.
sys | get cpu | to csv | pspg --csv
Catatan: footer_mode
harus dinonaktifkan
konfigurasi nushell:
$env.config.footer_mode = never
$env.config.table.header_on_separator = false
$env.config.ls.clickable_links = false
$env.config.table.mode = rounded
pspg coba gunakan mode mouse xterm 1002, ketika terminal dan ncurses tidak terlalu antik. Jika ada masalah dalam penggunaan - artefak visual yang tidak diinginkan saat Anda menggerakkan mouse saat beberapa tombol mouse ditekan, maka 1. harap laporkan masalah (harap lampirkan file log), 2. gunakan opsi --no-xterm-mouse-mode
dan pspg
tidak akan mencoba mengaktifkan mode ini.
Di Fedora saya, terminal ini tidak menampilkan tema warna sebenarnya dengan benar. Masalah dasarnya ada pada pengaturan TERM
default, yaitu xterm-256color
. Sayangnya, terminal konsole
tidak sepenuhnya kompatibel dengan xterm
, dan tidak mengizinkan perubahan warna. Anda dapat memaksakan warna langsung dengan menggunakan opsi --direct-color
atau dengan mengatur TERM=xterm-direct
. Opsi kedua adalah pengaturan variabel TERM
yang lebih tepat ke konsole-256color
. Dalam hal ini pspg
akan memetakan warna RGB sebenarnya ke 256 warna yang didukung.
Beberapa masalah linker dapat diperbaiki dengan:
saya berubah gcc -lncursesw pager.c -o pspg -ggdb ke gcc pager.c -o pspg -ggdb -lncursesw
Jika Anda ingin menggunakan pspg
sebagai klien Postgres, Anda perlu menjalankan configure --with-postgresql=yes
. Di Fedora dengan build Postgres sendiri saya harus menginstal paket openssl-devel
dan saya harus mengatur export PKG_CONFIG_PATH="/usr/local/pgsql/master/lib/pkgconfig/"
.
Di FreeBsd Anda harus menggunakan gmake
make
.
Saat Anda mengkompilasi kode dari sumber, jalankan ./configure terlebih dahulu. Terkadang ./autogen.sh dulu
Jika Anda ingin menampilkan karakter UTF-8, maka pspg
harus dihubungkan dengan perpustakaan ncursesw
. Karakter UTF-8 ditampilkan dengan buruk saat perpustakaan ncursesw
digunakan. Anda juga dapat melihat karakter yang rusak dengan pengaturan lokal yang salah.
Anda dapat memeriksa dukungan karakter lebar dengan pspg --version
. ncurses with wide char support
diharapkan. Jalankan kembali configure
dengan opsi --with-ncursesw
. Ketika perintah ini gagal, periksa apakah paket pengembangan untuk perpustakaan ncursesw telah diinstal.
# brew install pspg
Anda dapat mengkompilasi pspg
dengan mudah tanpa brew
, tetapi Anda memerlukan perpustakaan gnu readline
. MacOS menggunakan readline default yang ditiru melalui libedit, tetapi pspg
memerlukan perpustakaan readline gnu lengkap.
LDFLAGS="-L/usr/local/opt/readline/lib" CPPFLAGS="-I/usr/local/opt/readline/include" ./configure
LDFLAGS="-L/usr/local/opt/readline/lib" CPPFLAGS="-I/usr/local/opt/readline/include" make
# apt-cache search pspg
# apt-get install pspg
# dnf install pspg
Pspg tersedia dari repositori komunitas https://yum.postgresql.org/packages.php
# apk add pspg
# emerge -av dev-db/pspg
Repositori Pengguna Arch berisi dua versi:
master
. Gunakan pembantu AUR pilihan Anda atau git dan makepkg
untuk menginstal pspg.
# pkg install pspg
# pkg_add pspg
Lebih lanjut tentang itu
# port install pspg
pspg
cukup digunakan di MS Windows dengan menggunakan wsl2. Saya mengujinya, dan berfungsi tanpa masalah.
Di terminal jalankan wsl --install -d Ubuntu-22.04
Di terminal, buka sesi Ubuntu
sudo apt-get update
sudo apt-get install pspg
sudo apt-get install postgresql postgresql-contrib
# set password for user postgres
sudo passwd postgres
su - postgres
psql postgres
>> create role pavel login;
q
exit
touch ~/.psqlrc
mcedit .psqlrc
pset linestyle unicode
pset border 2
setenv PSQL_PAGER 'pspg -b -X'
# press F2 and F10
psql postgres
tidak ada perbedaan apapun dari instalasi dan bekerja di Ubuntu (Debian)
pspg
belum di-porting ke MS Windows. Ada ketergantungan pada ncurses dan fungsi newterm
yang diimplementasikan dengan benar (sepenuhnya) ( pdcurses
melakukan ini hanya pada platform Unix). Mungkin bisa bekerja dengan WSL2 (saya tidak mengujinya). Alternatifnya adalah menggunakan less
pager, yang di-porting ke beberapa lingkungan MS Win. less
bergantung pada termcap
, dan ini sedikit lebih portabel daripada pspg
( termcal
adalah ncurses lapisan rendah). less
mendukung baris tetap dan dengan opsi --chop-long-lines
atau hanya -S
dapat digunakan sebagai pager untuk pspg
.
export PSQL_PAGER="less --chop-long-lines --header 1"
Ada beberapa masalah yang memerlukan perubahan kode manual agar kompilasi berhasil - kami berhasil menguji pspg
, tetapi meskipun pspg
dikaitkan dengan perpustakaan ncursesw, dukungan pengkodean utf8 tidak berfungsi sepenuhnya dengan benar - mungkin karena beberapa masalah di perpustakaan libc
. Ada masalah dengan karakter yang dikodekan ke 3byte - batas unicode, .. Karakter unicode dua byte harus ditampilkan dengan baik.
Anda dapat menggunakan pspg
dengan karakter beraksen biasa, tetapi batas unicode tidak boleh digunakan. Penggantian batas ascii dengan karakter perbatasan khusus (dengan teknologi ncurses) berfungsi dengan baik - lihat pada Options|Force unicode borders
.
Solaris make
tidak mendukung pernyataan kondisional - harus dihapus Jadi, hapus fungsionalitas yang tidak didukung dari Makefile
( ifdef
, endif
), ganti -include
dengan include
terlebih dahulu.
Setelah menjalankan configure
hapus tautan pada perpustakaan termcap
dari config.make
. Ini adalah sampah yang dihasilkan oleh skrip readline
automake. Kombinasi dengan perpustakaan ncurses
membuat beberapa masalah tautan.
export CURSES_CFLAGS="-I/usr/include/ncurses/"
export PANEL_LIBS="-lpanelw"
./configure
export CFLAGS="-m64 -I/opt/csw/include"
export LDFLAGS="-L/opt/csw/lib/64 -R/opt/csw/lib/64"
export PKG_CONFIG_PATH="/opt/csw/lib/64/pkgconfig"
./configure
Simpan data dalam beberapa format kolom (sekarang data disimpan seperti susunan baris). Dengan perubahan ini dimungkinkan untuk mengoperasikan kolom - menyembunyikan kolom, mengubah lebar, mengulangi siklus pada kolom, mengubah urutan kolom, menandai kolom, dan mengekspor hanya kolom yang dipilih (baris yang dipilih).
Ganti dokumen pencetakan langsung ke jendela ncurses dengan beberapa struktur yang lebih cerdas. Secara internal ada banyak pemeriksaan dan perbaikan untuk mendukung tata letak dinamis yang kompleks. Kemungkinan tampilan harus mengingat baris pertama, baris terakhir, baris saat ini. Sekarang, data ini berada dalam variabel global atau dalam struktur DataDesc dan ScrDesc.
Proyek ini menggunakan perpustakaan st_menu - implementasi menubar CUA dan menu pulldown untuk ncurses https://github.com/okbob/ncurses-st-menu
Jika Anda menyukainya, kirimkan kartu pos dari negara asal Anda ke alamat saya, silakan:
Pavel Stehule
Skalice 12
256 01 Benesov u Prahy
Czech Republic
Saya mengundang pertanyaan, komentar, laporan bug, tambalan di alamat email [email protected]