Algumas
dicas sobre a "linha de comando":
Nesta secção, como exemplo, escolheu-se fazer uma breve referência à shell "bash", onde se darão algumas dicas sobre as suas variáveis e os seus ficheiros de configuração. Após uma breve introdução à shell, falar-se-á sobre:
a) Ficheiros de configuração da "bash";
b) Variáveis da "bash";
c) Aliases;
d) A Prompt;
Mas o que é realmente uma "shell"?
Podemos pensar numa shell como um programa que se faz a "ponte" entre o utilizador e o sistema operativc. É um interprete de comandos que executa comandos lidos a partir de ficheiros ou das entradas efectuadas pelo utilizador. Ou seja, implementa a linguagem que o utilizador utiliza para controlar o sistema operativo.
Uma shell pode ser interactiva ou não-interactiva. Uma shell interactiva é aquela cujo input é proveniente do teclado e o output é enviado para o monitor, enquanto que a não-interactiva diz respeito a uma shell que é iniciada a partir de uma script.
Ficheiros de configuração da "bash":
Supondo que a "bash" é a shell usada pelo utilizador em causa, então quando este realizar o login, a bash é inicializada como uma shell interactiva. Após o login se efectuar, a bash procura pelo ficheiro "/etc/profile" e, caso este exista, as suas linhas serão executadas. Após ler o ficheiro "/etc/profile", a bash procura na directoria "home" do utilizador pelos ficheiros ".bash_profile", ".bash_login" e ".profile" (por esta ordem) e lê e executa o primeiro que encontrar. No logout é serão executadas as linhas presentes no ficheiro ".bash_logout", caso este exista na directoria "home" do utilizador. Estes ficheiros de inicialização são utilizados para definir a "path", a "prompt" e outras variáveis de ambiente que o utilizador pretenda configurar em cada login.
Variáveis da "bash":
Uma variável de ambiente não é mais do que um par "nome/string". A shell mantém uma lista destas variáveis, disponibiliando-as a qualquer programa que em algum momento as necessite. Eis algumas das variáveis mais conhecidas utilizadas pela shell:
DISPLAY - É uma variável que é lida por programas que "correm no X" para que estes saibam para onde eviar o seu output. De uma forma geral, costuma estar definida como ":0.0", significando isto que que o output será mostrado no monitor do "computador hóspede";
HOME - Diz respeito à directoria "home" do utilizador;
PATH - Trata-se de uma listagem de nomes de directorias separadas por dois pontos (:), que indicam os locsis onde a shell deverá procurar por progamas;
PS1 - É a prompt que o utilizador vê e asseguir à qual escreve os seus comandos;
TERM - Diz respeito ao tipo de terminal;
Existem também variáveis que são definidas pela própria shell. Vejamos os seguintes dois exemplos:
SHELL - Contém o nome completo da shell que está a ser utilizada (como por exemplo, "/bin/bash");
PWD - Diz respeito à corrente directoria, ou seja, à directoria associada ao último comando "cd";
Como já deve ter reparado, as variáveis da bash são escritas em maiúsculas. Para vermos o conteúdo das variáveis do sistema, utilizamos o comando "echo". Por exemplo, para vermos o conteúdo da variável "PATH", fazemos:
# echo $PATH (Não esquecer esvrecer o cifrão "$" antes do nome da variável)
Para alterar o conteúdo de uma variável utilizamos a ordem "export". Por exemplo, para alterarmos o conteúdo da variável "SECONDS", fazemos:
# export SECONDS=0 (Nesta caso não é necessário o cifrão "$")
No FreeBSD sucede com alguma frequência termos que utilizar comandos relativamente extensos. Ora isto tornar-se tão incómodo quanto maior for a frequência de utilização desses mesmos comandos. Por exemplo, o seguinte comando é relativamente extenso e incómodo de digitar:
# mount -t cd9660 /dev/acd0c /mnt/cdrom
Seria de todo vantajoso se fosse possível substituir toda esta "lenga-lenga" por uma breve expressão. Ora é esse mesmo o intuito dos "aliases". Ou seja, ao definirmos um "alias", estamos a informar o sistema que uma determinada expressão quando for utilizada irá realizar a mesma função do que o comando que associámos a este "alias" aquando da sua definição.
Os "alias" devem ser definidos no ficheiro ".bashrc" que se encontra na directoria "home" do utilizador em causa. É ainda necessário informar a shell "bash" que o ficeiro ".bashrc" deverá ser lido durante a inicialização. Para tal acrescentam-se as seguintes linhas ao ficheiro ".bash_profile" que se encontra na directoria "home" do utilizador:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Vejamos então, como exemplo, uma linha do ficheiro ".bashrc" que corresponde a um "alias":
alias mcd='mount -t cd9660 /dev/acd0c /mnt/cdrom'
Então apartir do proximo login que realizarmos ao sistema após a criação de um determinado "alias" a expressão de substituição definida para esse "alias" passará a funcionar. Para este exemplo, a expressão "mcd" irá substituir aquele extenso comando.
A prompt:
Após a instalação da ahell "bash" a prompt que fica definida é bastante simples. Será algo do género:
bash-2.0.2#
A bash dá-nos a possibilidade de configurar a prompt da nossa conta de utilizador através da definição da variável "PS1". Assim, cada utilizador poderá ter uma prompt personalizada e ao seu próprio gosto. Se no ficheiro ".profile" da directoria "home" do utilizador, estiver definida a variável "PS1" como se segue:
PS1='[\u@\h\w]\$'
Então, a prompt correspondente será:
[username@nomedamaquina directorioactual]$
Enquanto que a seguinte definição:
PS1='\d\t\n[\u@\h\w]\$'
Dará origem a:
Fri Jul 23 - 11:11:11
[username@nomedamaquina directorioactual]$
Como podemos obsevar, a variável "PS1" destes exemplos, tem na suaconfiguração vários caracteres especiais. Vejamos o seu significado:
\t
- A hora actual no formato HH:MM:SS;
\d
- A data no formato "Dia da semana Mês
Dia do mês";
\n
- Quebra de linha;
\s
- Nome da shell;
\w
- Directório actual;
\W
- O nome de base do directório actual;
\u
- Nome do utilizador;
\#
- Numero de comando do comando actual;
\!
- Posição no histórico de comandos do
comando actual;
\$
- Se a EUID é o 0 (root) o caracter
"#", em qualquer outro caso o "$";
\\
- A barra inclinada para traz;
\nnn
- O
caracter correspondente ao número octal nnn;
\[
- Começa uma sequência de caracteres não
imprimíveis, como os
caracteres de escape ou as
sequências de controlo. Estes caracteres
podem ser usados para
definir cores;
\]
- Fim da sequência de caracteres não
impressos;
Uma outra coisa interessante que podemos fazer com a prompt, é dar-lhe cores. Vejamos um exemplo. Ao definirmos a variável PS1 do seguinte modo:
PS1='\[\033[0;32m\]\t
\w\n[\[\033[1;33m\]\u\[\033[0;32m\]@\H]\$\[\033[0m\]'
A
prompt passará a ter o seguinte aspecto: (username em amarelo e o resto em
verde)
horas:min:seg
/directória/actual
[username@nome.da.maquina]$
Eis o significado das sequências de caracteres utilizadas para as cores:
\[\033[0;32m\]
- Verde;
[\[\033[1;33m\]
- Amarelo;
\[\033[0m\] - Para que as cores definidas anteriormente não tenham efeito sobre o texto que é digitado após o prompt.
Para saber mais sobre todos estes temas, consulte as Man Pages ("man bash").