make all

cd /usr/src/universe && make all

Personalizando o psql

Escrito por Guedes em Maio 25, 2008

Personalizando o psqlUma das ferramentas mais utilizadas na administração do PostgreSQL é o nosso bom e velho psql. Sua interface em modo texto permite a sua utilização local ou remota de maneira rápida e eficiente  nos presenteando com alguns recursos interessantes como por exemplo a complementação de código baseada em contexto (proporcionado pelo readline).

Outro recurso que utilizo é a personalização do prompt, e este é muito útil para quem está acostumado a conectar em vários servidores distintos, administrando várias bases de dados em cada um deles, pois ele pode lhe fornecer dados interessantes de uma forma simples e prática. Vou tentar exemplificar:

Imagine um cenário onde você administre 3 (três) servidores diferentes, cada um deles contendo algumas bases de dados, conforme a figura abaixo:

Personalizando o psql

Você pode utilizar o script a seguir para definir o um prompt personalizado para cada servidor.

#!/bin/sh
########################################################
#
# Script inicializacao de parametros do psql
#
#
# 2007-2008 (c) Dickson Guedes <guediz at gmail dot com>
########################################################
ARG1=$1

PSQL_RC="$HOME/.psqlrc"

PROMPT_SRV01='%[%033[44;37;1m%](%`date +%H:%M:%S`) %n@%M:%>/%/ %[%033[0m%]\\n%x%# '
PROMPT_SRV02='%[%033[43;37;1m%](%`date +%H:%M:%S`) %n@%M:%>/%/ %[%033[0m%]\\n%x%# '
PROMPT_SRV03='%[%033[41;37;1m%](%`date +%H:%M:%S`) %n@%M:%>/%/ %[%033[0m%]\\n%x%# '
PROMPT_DEFAULT='%[%033[40;37;1m%](%`date +%H:%M:%S`) %n@%M:%>/%/ %[%033[0m%]\\n%x%# '

SERVIDOR=${ARG1:=srv01}

define_psqlrc() {
        echo "\set QUIET 1" > $PSQL_RC
        echo "\pset null '(null)'" >> $PSQL_RC
        echo "\set PROMPT1 '$1'" >> $PSQL_RC
        echo "\set PROMPT2 '| '" >> $PSQL_RC
        echo "\set HISTSIZE 5000" >> $PSQL_RC
        echo "\set HISTFILE ~/.psql_history- :DBNAME" >> $PSQL_RC
        echo '\\timing' >> $PSQL_RC
        echo "\set QUIET 0" >> $PSQL_RC
}

case $1 in
        srv01) define_psqlrc "$PROMPT_SRV01" ;;
        srv02) define_psqlrc "$PROMPT_SRV02" ;;
        srv03) define_psqlrc "$PROMPT_SRV03" ;;
            *) define_psqlrc "$PROMPT_DEFAULT" ;;
esac

psql -h $SERVIDOR
## FIM DO SCRIPT

Com esse script eu posso executá-lo e obter prompts diferenciados para cada servidor:

Personalizando o psql

Personalizando o psql

Personalizando o psql

A data é apresentada através do uso da sequência de escape %`command`. Já as cores são mostradas através do uso da sequência de escape %[ ... %].

Outras sequências de escape e personalizações podem ser encontradas no manual do psql.

Bom, é isso!

Uma resposta para “Personalizando o psql”

  1. Ribamar FS Disse:

    Beleza Dickson, rapaz criei o script, dei a permissão de execução.
    Loguei como postgres:
    su - postgres
    Capturei o diretório do usuário com pwd.
    Fiz login como postgres.
    Copiei para o diretório do usuário e chamei com:
    ./psql localhost
    Depois dos ajustes nas aspas, corrigindo para ‘ então recebi um prompt muito mais útil que o original.
    P.S.: Minha mania de tutorial. De repente aparece um iniciante por aqui. :)
    Valei amigo.
    Você já pensou em enviar para a equipe para ver se eles aproveitam?
    Acho que vale a pena a idéia.
    Felicidades.

Deixe um comentário

XHTML: Você pode usar estas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>