~/.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