Linux – Shell

Introdução à 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
A Shell está então se encarregando de ser o intermediário entre o sistema de exploração e o utilizador graças às linhas de comando escritas por este. O seu papel consiste assim em ler a linha de comando, interpretar o seu significado, executar o comando, seguidamente devolver o resultado às saídas.

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

Cada utilizador possui uma shell por defalt, que será lançada durante a abertura de comando. A shell por defalt está definida no ficheiro de configuração /etc/passwd no último campo da linha que corresponde ao utilizador. É possível alterar a shell numa sessão, executando muito simplesmente o ficheiro executável correspondente, por exemplo:

/bin/bash

Convite de comando (rápido)

A shell inicia-se lendo a sua configuração global (num ficheiro do directório /etc/), de seguida 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, quer dizer /home/nom_de_l_utilizador/.ficheiro_de_configuracao), posteriormente afixa um convite de comando (em inglês prompt) do seguinte modo:

machine:/repertoire/courant$

Por defalt, na maior parte das shells o prompt é composto pelo nome da máquina, seguido de dois pontos (:), do directório corrente, seguido de um carácter que indica o tipo de utilizador conectado:

Noção de linha de comando

Uma linha de comando é uma cadeia de caracteres constituída por um comando, correspondente a um ficheiro executável do sistema, ou por 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/jean-francois/ são argumentos. Os argumentos que começam – designam-se opções. Para cada comando existem geralmente diversas opções que podem ser detalhadas escrevendo um dos seguintes comandos:

commande --help
commande -?
man commande

Entrada/saída standard

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

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.

Redirecionamentos

O Linux, como qualquer sistema de tipo Unix, possui mecanismos que permitem reencaminhar os entrada/saída standard para ficheiros.
Assim, a utilização do carácter “>” 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/meuficheirodeconfiguracao

O comando seguinte é equivalente a uma cópia de ficheiros :

cat toto > toto2

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

> fichier

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

cat < SH.txt

De maneira análoga, o carácter “<” indica um redireccionamento da entrada standard. O comando seguinte envia o conteúdo do ficheiro SH.txt em entrada do comando cat, cujo único objectivo é afixar 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 (carácter “|”), 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ética:

ls -al | sort

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

ls -l | grep zip | wc -l

Bom isso é tudo, abraços!

Se você gostou deste post, escreva um comentário e/ou cadastre-se em nosso feed.

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Comentários

Ainda não há comentários.

Escreva um Comentário

(obrigatório)

(obrigatório)


Get Adobe Flash playerPlugin by wpburn.com wordpress themes