Linux – O Shell

Junho 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 comandos, interpretar o seu significado, executar o comando e devolver o resultado pelas saídas. Na verdade, a interface Shell é um arquivo executável, encarregado de interpretar os comandos, transmiti-los ao sistema e devolver o resultado.

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 lançar 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, ao ler a configuração própria ao usuário (em um arquivo oculto, cujo nome começa por um ponto e que se situa no diretório básico do usuário, ou seja,
 /home/user_name/.configuration_file
). Em seguida, 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 comandos

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 os argumentos (configurações) opcionais:
ls -al /home/jf/
.

No comando acima, ls é o nome do comando e Al e /home/jf/ são os ‘argumentos’. Os argumentos que começam com - são as ‘opções’. Para cada comando existem um certo numero de opções que podem ser detalhadas ao introduzir um dos seguintes comandos:
command --help  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. STDIN se identifica com o número 0.
stdout, chamado saída padrão, onde o processo escreve os dados de saída. Por padrão, o stdout se refere à tela. STDOUT se identifica com o número 1.
stderr, chamado erro padrão, no qual o processo escreve as mensagens de erro. Por padrão, o stderr corresponde à tela. STDERR se identifica com o 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, um 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:
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 (canos)

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

Veja também


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: 26 de maio de 2017 às 13:31 por pintuda.
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.