~/.psqlrc設定ファイルとそのオプションを理解すること、他人の~/.psqlrcを読むことは、Postgresのコマンドラインでの作業をより楽しいものにしてくれる。
プロンプトを変える
デフォルトでは、プロンプトは少々つまらない。
$ psql my_database
my_database=#
飾り立ててみよう。
プロンプトを変更するたくさんのオプションがある。色をつけたり、ドメイン名を入れたり、現在操作しているデータベースの名前を入れたり、色々できる。
\set PROMPT1 '%[%033[1m%]%M %n@%/%R%[%033[0m%]%# '
%[..%]は、デフォルトのプロンプトを太字の黒に変更する%Mは「データベースサーバのドメイン名付きのホスト名、あるいはUnixドメインソケット経由の接続の場合[local]」%nはデータベースのユーザ名%/はデータベース名%Rは「通常は=、シングルラインモードでは^、データベースからセッションが切断された状態では!」切断されているのが見えるのは良い- 最後の
%[...%]は太字の黒をリセットする %#は、スーパーユーザの時は#、それ以外では>
ローカルデータベースの場合こうなる。
-bash-4.1$ psql
"help" でヘルプを表示します.
[local] postgres@postgres=# \q
さらにプロンプトを変える
お利口さんのあなた方のことだから、PROMPT1という設定を見ればPROMPT2があることが推測できるだろう。当たりだ!これがPROMPT2だ。
\set PROMPT2 '[more] %R > '
PROMPT2は、psqlがさらに入力を求める時、例えば、SELECT * FROMと入力してEnterを押した時だ。まだセミコロンを入力していないので、psqlは我慢強くPROMPT2を表示して待つ。
以下、要約。
[more]は[more]のリテラル文字列PROMPT2内の%Rは、PROMPT1のそれとは違う意味がある。「PROMPT2では、シーケンスは-、\*、シングルクオート、ダブルクオート、ドル記号のいずれかに、psqlが入力を待っているかどうかで置き換えられる。/\* ... \*/コメントの中なのか、クオートで囲んだ中なのか、ドル記号でエスケープした文字列内なのかによる。」
これは不自然な例。
[local] gabe@my_database=# SELECT
[more] - > '
[more] ' > name
[more] ' > '
[more] - > FROM users;
いいね。
プロンプトだけが人生じゃない
これでプロンプトはおしゃれになったが、~/.psqlrcは人生にさらなる楽しみを与えてくれる。これが私が設定しているオプションだ。
-- デフォルトでは、NULLはスペースとして表示される
-- 空白なのかnullなのか?これで違いが見えるようになる
\pset null '[NULL]'
-- デフォルトでは表形式のフォーマット(1行目がヘッダ)になるが、
-- データが多い時はより読みやすいように拡張テーブル形式で表示
\x auto
-- 詳しいエラー表示
\set VERBOSITY verbose
-- データベースごとにヒストリファイルを作る
\set HISTFILE ~/.psql_history- :DBNAME
-- 1行で複数回コマンドが実行されたら、1回だけヒストリに保存
\set HISTCONTROL ignoredups
-- キーワード(SELECTなど)を、小文字で入力し始めたとしても
-- 大文字に自動変換
\set COMP_KEYWORD_CASE upper
次は?
便利だと思ったら、これをおすすめする。
~/.psqlrcの公式ドキュメント- Craig Kerstiens氏の「How I Work with Postgres」
- Harold Gimenez氏の
~/.psqlrc
