Linux – O Shell

Novembro 2017

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

Linux - The shell
Linux - The shell
Linux - Shell
Linux - Shell
Linux - Le shell
Linux - Le shell
Linux - La shell
Linux - La shell
Última modificação: 5 de outubro de 2017 às 14:03 por Pedro.CCM.
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.