Linux - O shell

Maio 2017

O que é o shell

O intérprete de comandos é a interface entre o usuário e o sistema operacional, é por essa razão que sua denominação em inglês é shell, ou seja, interface:

Le shell, une coquille 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 este. O seu papel consiste, desta maneira, na leitura da linha de comando, interpretar o seu significado, executar o comando e devolver o resultado para as 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 usuais as interfaces sh (chamada Bourne shell), bash (Bourne again shell), csh (C Shell), Tcsh (Tenex C shell), ksh (Korn shell) e zsh (Zero shell). Onome corresponde geralmente ao nome do executável.

Cada usuário possui uma shell por padrão, que será lançada durante a abertura de comando. A interface Shell é definida por padrão no arquivo de configuração /etc/passwd no último campo da linha que corresponde ao usuário É possível alterar a interface Shell em uma sessão, apenas lançando o arquivo executável correspondente, por exemplo:
/bin/bash

Funcionamento do comando (rápido)

A interface shell começa lendo a sua configuração global (num arquivo do diretório /etc/), em seguida, lendo a configuração própria ao usuário (em um arquivo escondido, cujo nome começa por um ponto, situado no diretório do usuário, quer dizer,
r /home/nome_de_usuário/.arquivo_de_configuração
), depois ela exibe um convite de comando, uma caixa de diálogo (em inglês prompt) que se apresenta desta forma:
machine:/repertoire/courant$
.

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

O que é e 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 ainda por meio de um comando Shell mais os argumentos (parâmetros) opcionais:
ls -al /home/jf/
.

No comando acima, ls é o nome do comando, e Al e
/home/jean-francois/
são argumentos. Os argumentos que começam são as opções. Para cada comando existem geralmente diversas opções que podem ser detalhadas escrevendo um dos seguintes comandos:
commande --help  commande -?  man commande
.

Como são as entrada/saída padrão

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


stdin, chamado entrada standard, no qual o processo vai ler os dados de entrada. Por defeito, o stdin corresponde ao teclado; STDIN é identificado pelo número 0;

stdout, chamado saída standard, no qual o processo vai escrever os dados de saída. Por defeito, o stdin corresponde ao ecrã; STDOUT é identificado com o número 1;

stderr, chamado erro standard, no qual o processo vai escrever as mensagens de erro. Por defeito, o stderr corresponde ao tela. STDERR é identificado com o número 2;

entrées-sorties standard : 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, mas é possível ler os dados a partir de qualquer periférico de entrada, ou mesmo a partir de um arquivo, e enviar a saída para um periférico de afixação, um arquivo, etc.

Redirecionamentos

O Linux, como qualquer sistema de tipo Unix, possui mecanismos que permitem reencaminhar os entrada/saída padrão para arquivos para arquivos.

Assim, a utilização do caractere > permite reencaminhar a saída standard de um comando situado à esquerda para o ficheiro situado à direita:
ls -al /home/jf/ > toto.txt  echo "Toto" > /etc/meuarquivodeconfiguração


O comando seguinte é equivalente a uma cópia de arquivos:
cat toto > toto2


O redirecionamento > tem como objetivo criar um novo arquivo. Assim, se um arquivo do mesmo nome existir, este será esmagado. O seguinte comando cria simplesmente um ficheiro vazio:
> arquivo


O emprego de um duplo caractere >> permite concatenar a saída padrão para o arquivo, quer dizer, acrescentar a saída na sequência do arquivo, sem esmagá-lo:
cat < toto.txt


De maneira análoga, o caractere < indica um redirecionamento da entrada standard. O comando seguinte envia o conteúdo do arquivo toto.txt em entrada do comando cat, cujo único objetivo é exibir o conteúdo sobre a saída standard (exemplo inútil, mas pedagógico):
cat << STOP

Tubos de comunicação (canos)

Os tubos (em inglês pipes, literalmente tubos) constituem um mecanismo de comunicação próprio a todos os sistemas UNIX. Um tubo, simbolizado por uma barra vertical (caractere |), permite afetar a saída standard de um comando a uma entrada standard de outra, como um tubo que permite fazer comunicar a entrada standard de um comando com a saída standard de outra.

Assim, no exemplo seguinte, a saída standard do comando ls - Al é enviado para o programa sort encarregue de fazer uma triagem do resultado por ordem alfabétic:
ls -al | sort


Desta maneira é possível encadear diversos comandos por tubos sucessivos. No exemplo seguinte, o comando afixa todos os ficheiros do diretório corrente, seleciona as linhas que contêm a extensão zip (graças ao comando grep) e conta 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: 20 de abril de 2017 às 09:31 por ninha25.
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.