domingo, 29 de março de 2015

Variáveis da palavra-chave shell

Se divertindo com seu bash e deixando ele mais interativo!

Quando você usa um ''shell'' na linha de comando, provavelmente trata-se de um bash shell. Em um shell, você pode definir uma variável e atribuir-lhe um valor a ser recuperado posteriormente. Veja um
exemplo de uma variável chamada
ORACLE_HOME:
# export ORACLE_HOME=/opt/oracle/product/11gR2/db1

Depois, você recorrer à variável colocando um ''$'' como prefixo antes do nome da variável, por exemplo:
# cd $ORACLE_HOME

Essa é uma variável definida pelo usuário. Do mesmo modo, há diversas variáveis definidas no shell propriamente dito, com o nome predefinido no shell e que controlam o modo como você interage nele.
É interessante conhecer essas variáveis (pelo menos as mais importantes) para aprimorar a qualidade e a eficiência de seu trabalho.

PS1

Essa variável define o prompt de comando do Linux. No exemplo apresentado a seguir, tentaremos alterar o prompt de comando do padrão ''# '' para ''$ '':

# export PS1="$ "
$
Você viu como o prompt mudou para $? Você pode colocar qualquer caractere aqui para alterar o prompt padrão. As aspas duplas não são necessárias, mas como queremos colocar um espaço depois de ''$'',
tivemos de inserir esse caractere entre aspas.

É só isso – é só mostrar o prompt num sofisticado caractere ou string de caracteres predefinidos? De jeito nenhum. Você também pode colocar símbolos especiais na variável para mostrar valores especiais. Por exemplo, o símbolo \u mostra o nome de usuário que efetuou login e \h, o nome do host. Se usarmos esses dois símbolos, o prompt poderá ser personalizado para mostrar o usuário e o local onde foi efetuado login:
$export PS1="\u@\h# "
oracle@oradba1#

Aqui vemos o prompt quando o usuário Oracle efetuou login no servidor chamado oradba1 – o suficiente para que você se lembre quem é o usuário e em qual máquina ele efetuou login.
É possível personalizar ainda mais o prompt usando outro símbolo, \W, que mostra o nome base do diretório atual. Veja como ficou o prompt:
# export PS1="\u@\h \W# "
oracle@oradba1 ~#

Como o diretório atual é HOME, aparece o símbolo ''~''. Quando você muda para outro diretório, o símbolo é alterado.

Adicionar o diretório atual é uma excelente maneira de lembrar-se onde você está e quais serão as implicações de suas ações. A execução de rm * causa um impacto no diretório /tmp diferente do que ocorreria em /home/oracle, certo?

Existe outro símbolo, o - \w. Há uma diferença muito importante entre \w e \W. Este produz o nome base do diretório atual, enquanto aquele mostra o diretório completo:
oracle@oradba1 11:59 AM db1# export PS1="\u@\h \@ \w# " 
oracle@oradba1 12:01 PM /opt/oracle/product/11gR2/db1#

Notou a diferença? No prompt anterior, no qual a opção \W foi usada, foi apresentado somente o diretório db1, que é o nome base. No prompt seguinte, no qual a opção \w foi usada, foi exibido o diretório completo:

/opt/oracle/product/11gR2/db1.

Em muitos casos, um nome de diretório completo no prompt pode ser de grande ajuda. Imagine que existem três Oracle Homes, cada qual com um subdiretório chamado db1. Como você poderá saber ao certo em que diretório está se for exibida apenas a indicação ''db1''? Um diretório completo não deixa dúvidas.No entanto, a exibição por extenso torna o prompt muito longo, o que pode ser um pouco inconveniente.

O símbolo ''\@'' mostra o horário atual no formato horas:minutos AM/PM:
# export PS1="\u@\h \@ \W# " 
oracle@oradba1 11:59 AM db1#

Eis alguns outros símbolos que você pode usar na variável shell do PS1:



























\!O número do comando no histórico (mais detalhes a seguir)
\dA data no formato Dia da semana Mês e Data
\HO nome do host com o nome do domínio. \h é o nome do host sem o domínio
\TIgual à opção \@, porém sem exibir os segundos.
\AO horário no formato horas:minutos, como ocorre com a opção \@, mas com o formato de 24 horas.
\tIgual à opção \A, porém inclui os segundos.

Nenhum comentário: