Usar histórico de comandos no SQL*Plus

Quem trabalha com o SQL*Plus sabe que uma das coisas mais irritantes nessa ferramenta é que depois de executar alguns comandos, ao tentar usar a seta para cima no teclado para voltar alguns comandos atrás, nada funciona.

Sim, apesas dos bilhões de dólares que a Oracle ganha anualmente, até hoje, ela não foi capaz de implementar um histórico navegável de comandos no SQL*Plus.

Mas existe um utilitário capaz de resolver isso, o rlwrap! O rlwrap utiliza a biblioteca readline do linux para “encapsular” o input de teclado de qualquer outro comando, fornecendo um histório navegável e editável dos comandos que você escreveu, por exemplo, no SQL*Plus ou no RMAN.

Para instalar a última versão disponível, baixe os fontes do rlwrap (link acima) e salve em um diretório temporário qualquer. Tenha certeza de que sua distribuição linux tem instalada a readline e a readline-devel.

Descompacte os fontes e, dentro do diretório descompactado, rode o configure, o make e o make install (os exemplos abaixos fazem a instalação do rlwrap no diretório /opt/rlwrap-0.42, com o link simbólico /opt/rlwrap):

wget http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap-0.42.tar.gz

tar -zxvf rlwrap-0.42.tar.gz

cd rlwrap-0.42

./configure --prefix=/opt/rlwrap-0.42

make

make check

make install

ln -s /opt/rlwrap-0.42 /opt/rlwrap

Agora você deve ajustar a variável PATH de seu ambiente para incluir o diretório /opt/rlwrap/bin no caminho de busca. Pronto! Agora é só testar, por exemplo (-i é case-insentive; -c é para completar nomes de arquivos e -s para determinar o tamanho do histório de comandos):

rlwrap -c -i -s 1000 sqlplus /nolog

Você verá que poderá usar o histórico de comandos no SQL*Plus! E o histório fica armazenado para sessões futuras, ou seja: se você sair do SQL*Plus e voltar depois, poderá navegar pelo histórico das sessões anteriores! Da mesma forma que no Bash, você poderá usar o Ctrl-R para procurar por comandos anteriores e poderá usar o tab para completar nomes de arquivos!

Para facilitar, você pode criar um alias para chamar o SQL*Plus através do rlwrap, por exemplo:

alias rlsql='rlwrap -c -i -s 1000 sqlplus /nolog'

ATENÇÃO, nem tudo são flores: não utilize o rlwrap para rodar scripts! Essa ferramenta foi criada para ser utilizada de forma interativa, ou seja, com o usuário no teclado! Se você utilizar o rlwrap com scripts sql, terá resultados imprevisíveis!

E lembre-se: rlwrap não é uma ferramenta da Oracle e, portanto, não tem suporte nem nada. Em compensação, você pode utilizá-la para qualquer utilitário de linha de comando que não tenha um histório de comandos!

Criar usuário no shell do Oracle Linux 6

Para criar um usuário no shell do Oracle Linux 6 (e outras distribuições derivadas do Red Hat Enterprise Linux, como o CentOS), o comando que costumo usar é o seguinte:

# useradd -m -d /home/abrantesasf -k /etc/skel [-g abrantesasf | -U] -G wheel -s /bin/bash abrantesasf

As opções são as seguintes:

  • -m: indica que é para o comando criar o diretório home
  • -d: indica qual o path do diretório home do usuário
  • -k: indica qual o template para a criação do diretório hoje
  • -g ou -U: você deve usar uma ou outra, não pode usar as duas opções ao mesmo tempo. A opção -g indicará qual o grupo principal do usuário (nesse caso o grupo principal já deverá estar criado previamente). A opção -U cria um grupo com o mesmo nome do usuário e torna esse grupo o principal para o usuário.
  • -G: indica os grupos secundários do usuário. O grupo whell é um grupo administrativo com acesso amplo ao sistema. Use com cuidado!!! Para indicar mais de um grupo, separe com vírgulas.
  • -s: indica o shell padrão do usuário

Verifique a man page do useradd para maiores detalhes.

Configurar proxy no shell do linux

Para fazer conexões remotas HTTP, HTTPS, FTP, etc., via linha de comandos no linux (o linux shell), é necessário configurar algumas variáveis de ambiente.

O jeito mais fácil é descobrir em qual arquivo sua distribuição linux costuma configurar essas variáveis (.bashrc, .bash_profile, etc.) e incluir algo como o seguinte:

#=======================
# Cofigurações do proxy:
#=======================
proxy="http://192.168.10.9:3128"
export https_proxy=$proxy
export  http_proxy=$proxy
export   ftp_proxy=$proxy
export    no_proxy="localhost,127.0.0.1,jupiter,jupiter.casadealegria.com.br,192.168.10.50"

Depois, teste a conexão com o wget, por exemplo.

Formatar pendrive na linha de comando do Linux

Lembrete sobre como formatar pendrives (ou outro USB Flash Drive qualquer) na linha de comando do Linux:

Como root, verifique qual o device do pendrive:

fdisk -l

Desmonte o dispositivo, se for o caso:

umount <dispositivo>

Use o mkfs para formatar o pendrive com o sistema de arquivos desejado. Por exemplo, para formatar um pendrive como FAT32:

mkfs.vfat -F 32 -n <label com até 11 caracteres> -v /dev/<dispositivo>

Para outros sistemas de arquivo, deve-se usar o mkfs.ext3, mkfs.ext4, mkfs.ntfs, etc. Para formatar um pendrive com EXT4, com 0% de espaço reservado para root:

mkfs.ext4 -m 0 -L pen03_ext4 -v /dev/sdb1

Para maiores informações, verifique a man page do mkfs.

Observação: se o pendrive não tiver uma tabela de particionamento válida, será necessário criar as partições antes de formatar. Para isso use o comando fdisk ou o cfdisk:

[c]fdisk /dev/<dispositivo>