Linux – O Shell

O que é o Shell do Linux

O intérprete de comandos é a interface entre o usuário e o sistema operacional e é por esta razão que seu nome em inglês é shell (concha):

O Shell, uma concha entre l
A interface Shell funciona como o intermediário entre o sistema operacional e o usuário graças às linhas de comando escritas por ele. A sua função é ler a linha de comando, interpretar seu significado, executar o comando e devolver o resultado pelas saídas. Na verdade, a interface Shell é um arquivo executável, encarregado de interpretar comandos, transmiti-los ao sistema e devolver resultados.

Existem vários tipos de Shell, sendo os mais comuns o sh (chamado Bourne shell), o bash (Bourne again shell), o csh (C Shell), o Tcsh (Tenex C shell), o ksh (Korn shell) e o zsh (Zero shell). Normalmente, seus nomes correspondem ao nome do executável.

Cada usuário tem um Shell padrão, que será ativado na abertura de um indicador do comando. O Shell padrão é definido no arquivo de configuração

/etc/passwd

no último campo da linha que corresponde ao usuário. Você pode alterar o Shell durante uma sessão. Para isso, basta rodar o arquivo executável correspondente, por exemplo:

/bin/bash

.

Indicador do sistema ou prompt de comando

O Shell se inicia ao ler sua configuração global (em um arquivo do diretório /etc/). Em seguida, ele lê a configuração própria ao usuário (em arquivo oculto, cujo nome começa por um ponto e se situa no diretório básico do usuário:

 /home/user_name/.configuration_file

). Depois, aparece o seguinte indicador de comando (prompt):

máquina:/diretório/atual$

.

Por padrão, na maior parte dos Shells, o prompt é composto pelo nome da máquina, seguido de dois pontos (:), do diretório atual e de um caractere que indica o tipo de usuário conectado: $ indica que se trata de um usuário normal e # do administrador, chamado root.

O conceito de linha de comando

Uma linha de comando é uma cadeia de caracteres constituída por um comando que corresponde a um arquivo executável do sistema, ou melhor, um comando do Shell assim como as configurações opcionais:

ls -al /home/jf/

.

No comando acima, ls é o nome do comando e Al e /home/jf/ são as configurações. Aquelas que começam por - são as opções. Para cada comando, existe um certo numero de opções que podem ser detalhadas ao introduzir um dos seguintes comandos:

command --help

e

command -?  man command

.

Como são as entradas/saídas padrão

Durante a execução de um comando, é criado um processo que abrirá três fluxos:

stdin, chamado entrada padrão, no qual o processo lê os dados de entrada. Por padrão, o stdin se refere ao teclado e é identificado pelo número 0;

stdout, chamado saída padrão, no qual o processo escreve os dados de saída. Por padrão, o stdout se refere à tela e é identificado pelo número 1;

stderr, chamado erro padrão, no qual o processo escreve as mensagens de erro. Por padrão, o stderr se refere à tela e é identificado pelo número 2:

entradas-saídas padrão: STDOUT, STDIN, STDERR
Por padrão, quando se executa um programa, os dados são lidos a partir do teclado e o programa envia a sua saída e os seus erros para a tela. No entanto, também é possível ler os dados a partir de qualquer dispositivo de entrada, ou mesmo a partir de um arquivo, e enviar a saída para um dispositivo de visualização, arquivo etc.

Redirecionamentos

O Linux, como qualquer sistema Unix, possui mecanismos que permitem redirecionar a entrada/saída padrão para arquivos.

Assim, a utilização do caractere > permite reencaminhar a saída padrão de um comando situado à esquerda de um arquivo situado à direita. Veja o exemplo:

ls -al /home/jf/ > toto.txt  echo "Toto" >/etc/meuarquivodeconfiguração

O seguinte comando é equivalente a uma cópia dos arquivos:

cat toto > toto2

O objetivo do redirecionamento > é criar um novo arquivo. Assim, se um arquivo do mesmo nome existir, ele deve ser esmagado. O seguinte comando cria simplesmente um arquivo vazio:

> arquivo

O uso de um duplo caractere >> permite concatenar a saída padrão para o arquivo, ou seja, acrescentar a saída depois do arquivo, sem eliminá-lo.

Da mesma maneira, o caractere < indica um redirecionamento da entrada padrão. O comando seguinte envia o conteúdo do arquivo toto.txt com o comando cat, cujo único objetivo é mostrar o conteúdo na saída padrão (o exemplo não é útil, mas instrutivo):

cat < toto.txt

Por último, o uso do redirecionamento << permite a leitura, na entrada padrão, quando a cadeia estiver à direita. No seguinte exemplo, a entrada padrão é lida até que se encontre a palavra STOP. Em seguida, o resultado aparece:

cat << STOP

Tubos de comunicação

Os tubos (pipes) são mecanismos de comunicação específicos para todos os sistemas UNIX. Um tubo, simbolizado por uma barra vertical (caractere |), permite atribuir a saída padrão de um comando a uma entrada padrão de outro, da mesma forma que um tubo permite a comunicação entre a entrada padrão de um comando e a saída padrão de outro.

No exemplo seguinte, a saída padrão do comando ls - Al é enviada para o programa sort encarregado de fazer uma triagem do resultado por ordem alfabética:

ls -al | sort

Isto permite conectar uma certa quantidade de comandos por tubos sucessivos. No exemplo seguinte, o comando mostrará todos os arquivos do diretório atual, selecionará as linhas que contêm a extensão zip (graças ao comando grep) e contará o número total de linhas:

ls -l | grep zip | wc -l
Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Este documento, intitulado 'Linux – O Shell', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade