psqlrc中的颜色基于被访问的数据库

时间:2016-01-10 21:17:41

标签: psql

如果您要连接到主数据库而不是副本,我想显示不同的消息 - 可能在主数据库上使用红色提示,在副本上使用中性色。

有没有办法在.psqlrc中设置?

之类的东西
if `dbname` == 'prod' 
    \set PROMPT1 'danger danger'
else
    \set PROMPT1 'foo'
fi

谢谢!

1 个答案:

答案 0 :(得分:0)

这是一种方法...在#postgresql IRC频道中从MatheusOl获取答案。如果您在副本上,此代码将显示蓝色提示;如果您位于主节点上,则此代码将显示红色提示。

SELECT CASE WHEN pg_is_in_recovery() 
    THEN '%[%033[33;1m%]%x%[%033[0m%]%[%033[34m%]%/%[%033[0m%]%R%# ' 
    ELSE '%[%033[33;1m%]%x%[%033[0m%]%[%033[31m%]%/%[%033[0m%]%R%# ' 
END AS "PROMPT1" \gset

其中的关键区别是34(蓝色ANSI转义序列)与31(红色ANSI转义序列)。

请注意,如果使用libedit,那么ANSI转义序列可能会使用你的上/下/键盘快捷键,这是Mac OS X,Postgres.app和旧版Homebrew的默认设置。有关详细信息,请参阅Colors in the psql prompt