如何在 PostgreSQL 命令行工具 psql 中自定义提示符(最好是在每个用户的启动脚本中)?
特别是,我希望能够更改它,同时仍然包括指示命令是否为多行的字符(例如
=
、-
、'
等)。
我正在运行 Ubuntu 10.04 (Lucid), PostgreSQL 8.4.4.
您当然可以自定义提示。
来自文档:
提示psql问题即可 根据您的喜好定制。这 三个变量
,PROMPT1
,和PROMPT2
包含字符串和特殊 描述的转义序列 提示的出现。提示1是 发出时的正常提示 psql 请求一个新命令。提示 2 当需要更多输入时发出 在命令输入期间,因为 命令没有终止 分号或引号未结束。 当您运行PROMPT3
命令时会发出提示 3,您应该 在 终端。
SQL COPY
如果你想在每个用户的基础上设置提示,你可以将
\set
命令添加到用户的.psqlrc
文件中。
所以,你的
$HOME/.psqlrc
会是这样的:
\set PROMPT1 '(%n@%M:%>) %`date +%H:%M:%S` [%/] \n%x%# '
你也可以在命令行自定义提示,如果你不能设置一个
$HOME/.psqlrc
文件(例如炮击到一个你不控制的容器)
$ PROMPT1="PROMPT1='%[%033[1;31;40m%]%/%R%[%033[0m%]%# '"
$ psql -v $PROMPT1
或者如果你通过 kubectl 连接到容器,你可以这样做:
POD=$(getPodThatHasPostgresCli)
PSQL_PATH="./pgsql/bin/"
PROMPT1="PROMPT1='%[%033[1;31;40m%]%/%R%[%033[0m%]%# '"
CMD="export PGPASSWORD='$PGPASS'; $PSQL_PATH/psql -v $PROMPT1 $PGURL -U $PGUSER $*"
if ! kubectl exec -it "$POD" -- /bin/bash -c "$CMD"
then
echo "failed to connect to psql in pod"
exit 1;
fi