Sistemas UNIX -Shell

Abril 2015

Introdução ao shell

O intérprete de comandos é o interface entre o utilizador e o sistema de exploração, daí o seu nome inglês “shell”, que significa “casca”.

Le shell, une coquille entre l\



O Shell está assim encarregue de ser o intermediário entre o sistema de exploração e o utilizador graças às linhas de comandos escritas por este. O seu papel consiste assim em ler a linha de comando, interpretar o seu significado, executar o comando e seguidamente dar o resultado nas saídas.

O Shell é assim um ficheiro executável, encarregado de interpretar os comandos, transmiti-los ao sistema e devolver o resultado. Existem vários shells, sendo o mais corrente sh (chamado “Bourne shell”), bash (“Bourne again shell”), csh (“C Shell”), Tcsh (“Tenex C shell”), ksh (“Korn shell”) e zsh (“Zero shell”). O seu nome corresponde geralmente ao nome do executável.


Cada utilizador possui um shell por defeito, que será lançado aquando da abertura de uma janela de comando. O Shell está, por defeito, precisado no ficheiro de configuração /etc/passwd no último campo da linha que corresponde ao utilizador. É possível alterar o shell numa sessão, executando muito simplesmente o ficheiro executável correspondente, por exemplo:

 

/bin/bash

Janela de comando (rápida)

O Shell inicia lendo a sua configuração global (num ficheiro do directório /etc/), seguidamente lendo a configuração própria ao utilizador (num ficheiro escondido, cujo nome começa por um ponto, situado no directório básico do utilizador, ou seja /home/nom_de_l_utilisateur/.fichier_de_configuration), por último mostra a jenale de comando (em inglês prompt) do seguinte modo:

machine:/repertoire/courant$

Por defeito, na maior parte dos shells, o prompt é composto pelo nome da máquina, seguido de dois pontos (:), do directório corrente, seguidamente de um carácter que indica o tipo de utilizador conectado :
  • $” indica que se trata de um utilizador normal
  • “#” indica que se trata do administrador, chamado “root”

Noção de linha de comando

Uma linha de comando é uma cadeia de caracteres constituída por uma comando, correspondente a um ficheiro executável do sistema ou um comando shell, bem como os argumentos (parâmetros) opcionais:

ls -al /home/jf/

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

Entrada/saída standard

Aquando da execução de um comando, um dossier é criado. Este vai então abrir três fluxos:

  • stdin, chamado entrada standard, no qual o processo vai ler os dados de entrada. Por defeito, 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, stdout corresponde ao ecrã; STDOUT é identificado pelo número 1;
  • stderr, chamado erro standard, no qual o processo vai escrever as mensagens de erro. Por defeito stderr corresponde ao ecrã. STDERR é identificado pelo número 2;

entrées-sorties standard : STDOUT, STDIN, STDERR



Por defeito, 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 o ecrã, mas é possível ler os dados a partir de qualquer periférico de entrada, ou mesmo a partir de um ficheiro e enviar a saída para um periférico de afixação, um ficheiro, etc.

Redireccionamentos

O Linux, como qualquer sistema de tipo Unix, possui mecanismos que permitem redirigir as entradas/saídas standard para ficheiros.

Assim, a utilização do carácter “>” permite redirigir a saída standard de um comando situado à esquerda para o ficheiro situado à direita :

ls -al /home/jf/ > toto.txt 
echo "Toto" > /etc/monfichierdeconfiguration

O seguinte comando equivale a uma cópia de ficheiros :
cat toto > toto2

O redireccionamento “>” tem como objectivo criar um novo ficheiro. Assim, se um ficheiro do mesmo nome existisse, este seria esmagado. O comando seguinte cria simplesmente um ficheiro vazio :
> fichier


O emprego de um duplo carácter “>>” permite concatenar a saída standard para o ficheiro, ou seja, acrescentar a saída na sequência do ficheiro, sem o esmagar.

De maneira análoga, o carácter“<” indica uma redireccionamento da entrada standard. O comando seguinte envia o conteúdo do ficheiro toto.txt em entrada do comando cat, cujo único objectivo é mostar o conteúdo na saída standard (exemplo inútil, mas formador):

cat < toto.txt


Por último, o emprego do redireccionamento “<<” permite ler a entrada standard até a cadeia situada à direita ser encontrada. Assim, o exemplo seguinte vai ler a entrada standard até que a palavra STOP seja encontrada, e vai depois mostrar o resultado :

cat << STOP

Tubos de comunicação (pipes)

Os tubos (em inglês “pipes”) constituem um mecanismo de comunicação próprio a todos os sistemas UNIX. Um tubo, simbolizado por uma barra vertical (carácter “|”), permite afectar a saída standard de um comando à entrada standard de outra, como um tubo que permite a comunicação entre a entrada standard de um comando e 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 triar o resultado por ordem alfabética:

 

ls -al | sort


É possível, desta maneira, encadear diversos comandos através de tubos sucessivos. No exemplo seguinte, o comando mostra todos os ficheiros do directório corrente, selecciona as linhas que contêm a palavra “zip” (graças ao comando grep) e conta o número de linhas total:

ls -l | grep zip | wc -l
Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Sistemas-unix-shell.pdf

A ver igualmente


UNIX system - The shell
UNIX system - The shell
Sistema UNIX: El shell
Sistema UNIX: El shell
UNIX-System - SHELL
UNIX-System - SHELL
Systèmes UNIX - Le shell
Systèmes UNIX - Le shell
Sistemi UNIX - La shell
Sistemi UNIX - La shell
Este documento, intitulado « Sistemas UNIX -Shell »a partir de Kioskea (pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.