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 "$")

 


Aliases:

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").

 


 

 

Página anterior