psql
使用する人は皆、 less
pager も使用します。これはうまく機能しますが、表形式データに対する特別なサポートはありません。いくつかのプロジェクトを見つけましたが、この目的に十分なものはありませんでした。そこで、 psql
ページャーとして使用する小さな特殊なページャーを作成することにしました。
このページャーは、次のコマンド ライン クライアントからも使用できます。
mysql
sqlite
pgcli
monetdb
Trino (formerly Presto SQL)
usql
sqlcl
(オラクルの場合)nushell
mcview
やFoxPro
など - http://okbob.blogspot.com/2019/12/pspg-themes-what-you-use-it.htmlpspg
、Debian (Ubuntu) リポジトリから簡単にインストールできます。 RedHat (Fedora) リポジトリにはpspg
も含まれています。
# Debian (Ubuntu)
sudo apt-get install pspg
# RedHat (Fedora)
sudo dnf install pspg
基本的な設定は非常に簡単です。システム環境変数PSQL_PAGER
を設定するだけです。
export PSQL_PAGER='pspg -X -b'
MS Windows へのネイティブ インストールはサポートされていませんが、 pspg
wsl2
内で正常に動作します。 wsl2 環境内では、インストールは中古の Linux システムと同じです。
macOS/homebrew へのインストールは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 は、多くの主要なコマンドを Less Pager または vi エディターと共有します。
オプションは、 PSPG
環境変数内で渡すこともできます。構成ファイルが最初に処理されます。 PSPG
変数のオプションはステップの後で処理され、コマンド ライン オプションは最後に処理されます。 1 つのオプションを複数回処理でき、最後の値が優先されます。
名前 | 使用法 |
---|---|
PSPG | コマンドラインと同じオプションを保持できる |
PSPG_CONF | 設定ファイルへのパス |
PSPG_HISTORY | pspg の readline 履歴ファイルへのパス |
フィールド名は、関連するコマンド ライン オプションとは異なる場合があります。
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
コード | 名前 |
---|---|
0 | 黒と白 |
1 | ミッドナイトコマンダーみたいな |
2 | FoxProっぽい |
3 | Pdメニューのような |
4 | 白のテーマ |
5 | ムッツリ好き |
6 | PCファンのような |
7 | 緑のテーマ |
8 | 青のテーマ |
9 | 完璧な言葉 |
10 | 低コントラストの青のテーマ |
11 | ダークシアン/ブラックモード |
12 | パラドックスっぽい |
13 | dBase IV のレトロなスタイル |
14 | dBase IV レトロ スタイル (マゼンタ ラベル) |
15 | 赤白のテーマ |
16 | シンプルなテーマ |
17 | ソラリゼーションされたダークテーマ |
18 | ソラリゼーションライトのテーマ |
19 | Gruvbox ライトテーマ |
20 | タオライトのテーマ |
21 | FlatWhite テーマ |
22 | リレーショナル パイプのテーマ |
23 | 紙の色のテーマ |
http://okbob.blogspot.cz/2017/07/i-hope-so-every-who-uses-psql-uses-less.html を参照してください。
テーマは、組み込みテーマを参照するベース テンプレートとメニュー テンプレート上でカスタマイズできます。カスタム テーマ ファイルは、 pspg
設定が含まれるディレクトリに保存する必要があります。このファイルの名前は .pspg_theme_xxx である必要があります。カスタム テーマは、コマンド ライン オプション--custom-style=name
またはコマンドctheme name
によって選択できます。
カスタム テーマ ファイルの例 (名前は.pspg_theme_mc2
(コマンド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
一部のキーには記号*
を付けることができます。マークされたキーは奇数レコードに使用されます。
data* = black, lightgray
label* = black, lightgray, italic, bold
border* = #000000, lightgray
template
とtemplate_menu
カスタム テーマで指定されていないキーのフォールバック値を設定します。特にtemplate_menu
、現時点では F9 メニューの外観をカスタマイズする唯一の方法です。
鍵 | カスタマイズする |
---|---|
background | 背景色 |
data | データ (非ヘッダーまたは固定列) テキスト |
border | 枠線の色 |
label | ラベル (ヘッダーまたは固定列) のテキスト |
row_number | 行番号 |
record_number | |
selected_area | |
footer | 結果フッター (非表形式、例: 行数) |
cursor_data | 強調表示されたデータ (非ヘッダーまたは固定列) テキスト |
cursor_border | ハイライトされた境界線の色 |
cursor_label | 強調表示されたラベル (ヘッダーまたは固定された列) のテキスト |
cursor_row_number | ハイライトされた行番号 |
cursor_record_number | |
cursor_selected_area | |
cursor_footer | 強調表示された結果フッター (非表形式、例: 行数) |
scrollbar_arrows | スクロールバーの上下矢印 |
scrollbar_background | スクロールバーの「空」の背景 |
scrollbar_slider | 背景上のスクロールバー スライダー |
scrollbar_active_slider | マウスで掴まれたスクロールバーのスライダー |
title | 結果の見出し (psql の description コマンド内) |
status_bar | 上位のクエリとカーソルの位置情報 |
prompt_bar | |
info_bar | 情報テキスト (検索時の「見つかりません」など) |
input_bar | プロンプトとテキストを入力 (検索など) |
error_bar | |
bookmark | |
bookmark_border | |
cursor_bookmark | |
cross_cursor | 水平カーソルと垂直カーソルの交差点にある強調表示されたセル |
cross_cursor_border | 水平カーソルと垂直カーソルの交差点の境界線 |
matched_pattern | 検索結果の一致テキスト |
matched_pattern_nohl | |
matched_line | 検索結果を含む行 |
matched_line_border | 検索結果行の枠線 |
matched_pattern_cursor | ハイライトされた検索結果の一致テキスト |
matched_line_vertical_cursor | 垂直方向に強調表示された検索結果の一致テキスト |
matched_line_vertical_cursor_border | 検索結果が一致する垂直方向に強調表示されたセルの境界線 |
error |
ANSI カラーBlack
、 Red
、 Green
、 Brown
、 Blue
、 Magenta
、 Cyan
、 LightGray
、 Gray
、 BrightRed
、 BrightGreen
、 Yellow
、 BrightBlue
、 BrightMagenta
、 BrightCyan
、 White
、およびDefault
、ターミナル エミュレータの構成に従って表示されます。あるいは、16 進数の RGB 値#FF00FF
を指定することもできます。
スタイルは、 bold
、 italic
、 underline
、 reverse
、 standout
、 dim
の任意の組み合わせです。
一部のキーの形式が正しくない場合、この行は無視されます。カスタムテーマのデバッグには、 --log
オプションを付けてpspg
起動すると良いでしょう。壊れた定義に関する情報はログ ファイルに保存されます。
キー | 指示 |
---|---|
0、1、2、3 、 .. 、 9 | 最初の N 列をフリーズします |
KEY_UP 、 k | 1 行後ろに移動 |
KEY_DOWN 、 j | 1 行ずつ進む |
KEY_LEFT 、 h | 左にスクロール |
KEY_RIGHT 、 l | 右にスクロール |
Ctrl + KEY_LEFT | 1文字左にスクロール |
Ctrl + KEY_RIGHT | 1文字右にスクロール |
Shift + KEY_LEFT | 1列左にスクロール |
Shift + KEY_RIGHT | 1列右にスクロール |
Ctrl +ホーム、 g | ファイルの先頭に移動します |
Ctrl + End 、 G | ファイルの最後に移動する |
Alt + l | 行番号に移動 |
H | 現在のウィンドウの最初の行に移動します |
M | 現在のウィンドウの半分に移動します |
L | 現在のウィンドウの最後に移動 |
ページ、 Ctrl + b | 1 つのウィンドウを後ろに戻す |
NPAGE 、 Ctrl + f 、スペース | 1 ウィンドウ進む |
ホーム、 ^ | 行頭の最初の列に移動 |
終了、 $ | 行末の最後の列に移動 |
Ctrl + e | ウィンドウを下にスクロールする |
Ctrl + y | ウィンドウを上にスクロールする |
Ctrl + d | 半分のウィンドウを進める |
Ctrl + U | 窓を半分後ろに戻す |
s | コンテンツをファイルに保存する |
/ | 次の出現に導くパターンを検索します |
? | 前の出現箇所に移動するパターンを検索します |
n | 次の試合に向けて |
N | 逆方向の次の試合に向けて |
c | 列検索 |
Alt + / | 選択した領域内のパターンを検索します |
Alt + ? | 選択した領域内のパターンを後方検索します。 |
Alt + C | 描画線カーソルの切り替え(オン、オフ) |
Alt + m | 独自のマウス ハンドラーを切り替え (オン、オフ) |
Alt + n | 描画線番号の切り替え(オン、オフ) |
Alt + v 、列ヘッダーをダブルクリック | 描画列カーソルの切り替え(オン、オフ) |
マウスボタンホイール | 縦スクロール |
Alt +マウス ボタン ホイール | 水平スクロール |
F9 | メニューを表示 |
q 、 F10 、 Esc 0 | やめる |
Alt + q | 終了して生の (フォーマットされていない) コンテンツを印刷します |
Alt + k 、 Alt +ダブルクリック | ブックマークを切り替える |
Alt + j | 次のブックマークに移動 |
Alt + i | 前のブックマークに移動 |
Alt + o | ブックマークをフラッシュする |
ある | 昇順でソート |
d | 子孫を並べ替える |
あなた | 未ソート(元の順序でソート) |
空間 | ウォッチモードで停止/続行 |
R | 画面を再描画し、入力ファイルを更新します |
インス | 行、列、またはセルをデフォルトのターゲットにエクスポートします |
シフト+カーソル... | 範囲を定義する |
F3 | 選択行の開始/終了 |
Shift + F3 | 選択ブロックの開始/終了 |
Ctrl +マウスをドラッグ | 行の選択を定義し、列ヘッダーで列の選択を定義します |
Ctrl + o | 主画面を表示します。いずれかのキーを押して再びポケットベルに戻ります |
% 、 Ctrl + a | すべて選択 |
指示 | 説明 |
---|---|
N | 行番号に移動 |
+N | N 行前に移動 |
-N | N 行前に戻る |
N+ | 行番号に移動 |
N- | 最後から行番号に移動 |
theme N | テーマ番号を設定する |
copy [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | データをクリップボードにコピーする |
save [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | データをクリップボードにコピーする |
order [N|column name] | 列で並べ替える |
orderd [N|column name] | desc 列による並べ替え |
sort [N|column name] | 列で並べ替える |
sortd [N|column name] | desc 列による並べ替え |
dsort [N|column name] | desc 列 (エイリアス) による並べ替え |
rsort [N|column name] | desc 列 (エイリアス) によるソート |
asc [N|column name] | 列(エイリアス)でソート |
desc [N|column name] | desc 列 (エイリアス) によるソート |
search [back] [selected] [column name] [string|"string"] | データ内の検索文字列 |
名前がパイプ記号で始まる場合、出力は任意のコマンドにリダイレクトできます。
copy csv | less
ページャは、キーqまたはF10またはEsc 0を押すと終了できます。オプション--on-sigint-exit
を使用すると、 Ctrl + cまたはEsc Escキーを押してページャーを閉じます。
pspg は、 Alt + keyの組み合わせの代わりにEscキー、 key キーのシーケンスを使用する可能性をサポートしています。 Esc キーとキーを押す間隔は、オプションesc-delay
または構成のオプションesc_delay
で指定された間隔によって制限されます。これはミリ秒単位の最大遅延時間です。この間隔が経過すると、 Esc を1 回押すとEscape
として解釈されます。 -1 は無制限を意味し、0 はこの機能を無効にします。
列検索では毎回大文字と小文字が区別されません。検索された列は垂直カーソルでマークされます。現在の検索パターンが空文字列の場合、空でない文字列の最後の検索パターンが使用されます。検索は、表示されている垂直列の後、または最初に表示される固定されていない列 (水平スクロール後)、または最初の列から開始されます。最後の列の後、再び最初から検索が開始されます。
クリップボードをサポートするには、クリップボード アプリケーションをインストールする必要があります: 1. wl-clipboard (Wayland)、2. xclip (xwindows)、3. pbcopy (MacOS)、または 4.clip.exe (WSL2)。
pspg
毎回 Unicode 記号 '∅' を NULL に変換しようとします。 pset null ...
による特別な設定を使用しない場合、 psql
NULL の代わりに空の文字列を表示します。 pspg
は、この場合に対する特別な検出 (エクスポート ルーチン内) がありません。メニュー項目Empty string is NULL
チェックして有効または無効にする必要があります。
pspg
クリップボード アプリケーションの自動検出機能があります。残念ながら、この検出は同じケースでは機能しないはずです。 --clipboard-app
オプションに番号(1,2,3,4)を指定することでアプリケーションを指定できます。
フォーマットが違いを生む! pspg はデフォルトでレコードを CSV 形式でコピーします。この形式ではカンマ区切り文字が使用され、先頭と末尾の空白が削除されます。 「フォーマットされたテキスト」を使用してクエリ出力を正確にコピーするか、他の使用可能なオプションのいずれかを選択します。
V: [d/d d..d]
- 垂直カーソル: (列番号)/(列) (からの文字位置) .. (からの文字位置)FC: d
- 固定された列の長さ (文字数)C: d..d/d
- 文字単位の凍結されていない可視データ (.. から)/(合計)L:[d + dd/d]
- 行数 (最初に表示される行数) + (表示行数)、(現在の行)/(行数)d%
- すでに表示されているデータのパーセントミラー http://johnkerl.org/miller/doc/index.html とうまく連携します。
mlr --icsv --opprint --barred put '' obce.csv | pspg --force-uniborder
新しいバージョンには CSV サポートが統合されています - --csv
オプションを使用するだけです。
mc
に統合可能
/etc/mc/mc.ext
から~/.config/mc directory
にファイルをコピーします##csv 正規表現/.csv View=pspg -f %f --csv
mc
を再起動するpspg
使用すると、スクロールが一時的にフリーズすることが報告されています。この場合は、オプション--no-sleep
使用してください。 konsole (KDE ターミナル) 内で (スクロールバー経由で) スクロールが遅いことがわかります。オプション--no-sleep
も役立ちます。 クエリの結果は n 秒ごとに更新できます。 pspg
カーソル行、可能な垂直カーソル、可能な順序を記憶します。スペースキーを押して更新を一時停止する必要があります。このキーを繰り返し押すと、再度リフレッシュできます。
pspg
inotify API が利用可能な場合はそれを使用し、入力ファイルが変更されると、 pspg
ただちにファイルを再読み込みします。この動作は、オプション--no-watch-file
またはオプション--watch
による監視時間を指定することによって無効にできます。
pspg
、パイプ、名前付きパイプ、またはファイル (オプション--stream
を使用) から表形式データの連続ストリームを読み取ることができます。また、パイプまたはファイル (オプション--querystream
を使用) からクエリのストリームを読み取ることもできます。ストリーム モードでは、 pspg
テーブル間の区切り文字として空行を使用するため、テーブル形式のデータのみを処理できます。
クエリ ストリーム モードは、文字 GS (グループ区切り文字 - 区切られた行に 0x1D) で区切られた一連の SQL ステートメントです。
pavel@localhost ~]$ cat < /dev/pts/3 > ~/pipe 10を選択してください ^] 20を選択してください ^] 選択 * から pg_class ^]
プロフィールに以下を追加する必要があります。
#Postgres 10 以降の場合 エクスポート PAGER="pspg" #postgres 11 以降の場合 エクスポート PSQL_PAGER="pspg" #または「setenv PAGER pspg」を .psqlrc に
および.psqlrc
set 静かに 1 p線種ユニコードを設定 p境界線 2 を設定 pnull ∅ を設定 unset 静か
考えられる構成:
-- :x および :xx コマンドでポケットベルを切り替える set x '\setenv PAGER レス' set xx '\setenv PAGER 'pspg -bX --no-mouse'' :xx
LC_CTYPE
正しいはずです。主に Unicode ボーダーを使用する場合。 ncurses は、この変数が正しく設定されていない限り、Unicode 境界線 ( psql
によって生成される) を表示しません。値「C.UTF8」を確認することができます。
オプション--only-for-tables
使用すると、
PAGER
pspg
に設定し、 PSQL_PAGER
less
に設定します。PAGER
less
に設定し、 PSQL_PAGER
pspg
に設定しますMariaDB [sakila]> ページャー pspg -s 14 -X --force-uniborder --quit-if-one-screen PAGER を「pspg -s 14 -X --force-uniborder --quit-if-one-screen」に設定 MariaDB [sakila]> select now(); MariaDB [sakila]> select * from nicer_but_slower_film_list 制限 100;
SQLite ネイティブ クライアントは、適切にフォーマットされた出力を生成しませんが、CSV フォーマットを強制的に生成することができます。このフォーマットは、 pspg
で十分に読み取り可能です。
sqlite3 -csv -header testdb.db 'select * from foo2' | pspg --csv --csv-header=on --double-header
pgcli には次の構成オプション ( ~/.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 では、表形式の出力が非常に遅くなりました。回避策は csv 形式を使用することでした。パフォーマンスの問題が修正された現在のバージョンでは、これは必要ありません。オプション--pgcli-fix
pgcli
によって生成された部分的に壊れた csv 形式のインポートが修正されました。最新バージョンのpgcli
には csv 形式は必要なく、 --pgcli-fix
オプションも必要ありません。
pager = /usr/bin/pspg --rr=2 --quit-if-one-screen --ignore-case
現在、 sqlcl
ページャー オプションを直接サポートしていないため、qsh などのツールを使用してこの問題を回避するか、このリポジトリの pspg.sql スクリプトを使用することができます。
スクリプトを使用するには、以下に示すようにsqlcl
を開始します (現在の tty の詳細を渡すことが重要です)。
$ TTY=$(tty) sqlcl system/system @/path/to/pspg.sql
これで、次のようにクエリの結果をpspg
に送信できるようになります。
SQL> pspg select * from user_tables;
pspg
、デフォルトのtable_mode
: rounded
およびtable_mode
: heavy
をサポートします。
csvへの変換も利用できます。
sys | get cpu | to csv | pspg --csv
注: footer_mode
無効にする必要があります
ヌシェル構成:
$env.config.footer_mode = never
$env.config.table.header_on_separator = false
$env.config.ls.clickable_links = false
$env.config.table.mode = rounded
pspg は、ターミナルと ncurses があまり古くない場合、xterm マウス モード 1002 の使用を試みます。使用方法に問題がある場合 (マウス ボタンを押したときにマウスを移動すると、望ましくない視覚的アーチファクトが発生する)、1. 問題を報告してください (ログ ファイルを添付してください)。2. --no-xterm-mouse-mode
オプションを使用してください。 --no-xterm-mouse-mode
であり、 pspg
このモードをアクティブにしようとしません。
私の Fedora では、この端末は True Color テーマを正しく表示しません。基本的な問題は、デフォルトのTERM
設定、つまりxterm-256color
にあります。残念ながら、 konsole
ターミナルはxterm
と完全な互換性がなく、色の変更はできません。オプション--direct-color
を使用するか、 TERM=xterm-direct
を設定することにより、直接色を強制できます。 2 番目のオプションは、 TERM
変数をkonsole-256color
に正しく設定することです。この場合、 pspg
真の RGB カラーをサポートされている 256 色にマッピングします。
一部のリンカーの問題は次の方法で修正できます。
私は変わりました gcc -lncursesw pager.c -o pspg -ggdb に gcc pager.c -o pspg -ggdb -lncursesw
pspg
Postgres クライアントとして使用する場合は、 configure --with-postgresql=yes
を実行する必要があります。独自の Postgres ビルドを備えた Fedora では、 openssl-devel
パッケージをインストールする必要があり、 export PKG_CONFIG_PATH="/usr/local/pgsql/master/lib/pkgconfig/"
を設定する必要がありました。
FreeBsd では、 make
代わりにgmake
使用する必要があります。
ソースからコードをコンパイルするときは、最初に ./configure を実行します。場合によっては、最初に ./autogen.sh
UTF-8 文字を表示したい場合は、 pspg
ncursesw
ライブラリとリンクする必要があります。ライブラリncursesw
を使用すると、UTF-8 文字が正しく表示されません。ロケール設定が間違っていると、壊れた文字が表示されることもあります。
pspg --version
でワイド文字のサポートを確認できます。 ncurses with wide char support
期待されます。 --with-ncursesw
オプションを指定してconfigure
を再実行します。このコマンドが失敗した場合は、ncursesw ライブラリの開発パッケージがインストールされているかどうかを確認してください。
# brew install pspg
pspg
brew
なしで簡単にコンパイルできますが、 gnu readline
ライブラリが必要です。 MacOS はデフォルトで libedit 上でエミュレートされた readline を使用しますが、 pspg
は完全な GNU readline ライブラリが必要です。
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 はコミュニティ リポジトリ https://yum.postgresql.org/packages.php から入手できます。
# apk add pspg
# emerge -av dev-db/pspg
Arch ユーザー リポジトリには 2 つのバージョンが含まれています。
master
ブランチを追跡します。選択した AUR ヘルパー、または git とmakepkg
を使用して、pspg をインストールします。
# pkg install pspg
# pkg_add pspg
さらに詳しく
# port install pspg
pspg
、wsl2 を使用することで MS Windows 上で簡単に使用できます。テストしてみましたが、問題なく動作しています。
ターミナルでwsl --install -d Ubuntu-22.04
を実行します。
ターミナルで 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
Ubuntu (Debian) でのインストールと動作に違いはありません
pspg
まだ MS Windows に移植されていません。 ncurses と正しく (完全に) 実装された関数newterm
への依存関係があります ( pdcurses
Unix プラットフォームでのみこれを行います)。おそらく WSL2 で動作するでしょう (私はテストしていません)。別の方法としては、一部の MS Win 環境に移植されたポケットベルの使用をless
こともできます。 termcap
への依存がless
、 pspg
よりも移植性が少しだけ優れています ( termcal
ncurses の低層です)。 less
固定行をサポートしており、 --chop-long-lines
オプションを使用するか、 -S
だけをpspg
のページャーとして使用できます。
export PSQL_PAGER="less --chop-long-lines --header 1"
正常にコンパイルするには手動でコードを変更する必要がある問題がいくつかあります。 pspg
正常にテストされましたが、 pspg
ncursesw ライブラリにリンクされていましたが、utf8 エンコーディングのサポートは完全には正しく動作しませんでした。おそらくlibc
ライブラリにいくつかの問題があるためです。 3 バイトにエンコードされた文字には問題があります - Unicode の境界線など。2 バイトの Unicode 文字は適切に表示されるはずです。
通常のアクセント付き文字でpspg
使用できますが、Unicode の境界線は使用しないでください。 ASCII ボーダーを特別なボーダー文字 (ncurses テクノロジによる) に置き換えることはうまく機能します。 Options|Force unicode borders
オプションを確認します。
Solaris make
条件文をサポートしていません - 削除する必要があります。そのため、サポートされていない機能 ( ifdef
、 endif
) をMakefile
から削除し、最初に-include
include
に置き換えます。
configure
実行した後、 config.make
からtermcap
ライブラリのリンクを削除します。これは、 readline
automake スクリプトによって生成されるガベージです。 ncurses
ライブラリと組み合わせると、リンクの問題が発生します。
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
データを何らかの列形式で保存します (現在、データは行の配列のように保存されています)。この変更により、列の非表示、幅の変更、列の循環反復、列の順序の変更、列のマーク、選択した列 (選択した行) のみのエクスポートなど、列に対する操作が可能になります。
印刷ドキュメントを ncurses ウィンドウに直接置き換え、よりスマートな構造にします。内部的には、複雑な動的レイアウトをサポートするために多くのチェックと修正が行われています。おそらくビューは、最初の行、最後の行、現在の行を記憶する必要があります。現在、これらのデータはグローバル変数または DataDesc および ScrDesc 構造内にあります。
このプロジェクトは st_menu ライブラリを使用します - CUA メニューバーと ncurses のプルダウン メニューの実装 https://github.com/okbob/ncurses-st-menu
気に入っていただけましたら、あなたの母国から私の住所にポストカードを送ってください。
Pavel Stehule
Skalice 12
256 01 Benesov u Prahy
Czech Republic
質問、コメント、バグレポート、パッチはメールアドレス [email protected] までお寄せください。