Академический Документы
Профессиональный Документы
Культура Документы
Introduo
O sistema UNIX foi concebido em diversas camadas. Hardware: Dispositivos Kernel: Gerneciamento e controle do Hardware Programas: realizam tarefas especficas Shell: responsvel pela interao entre o usurio e o sistema operacional
O que o Shell
o programa que l o comando digitado pelo usurio e converte-o em uma forma mais simplificada e legvel para o Sistema Operacional UNIX. Possui um linguagem interpretada, com comando de alto nvel, que permite a construo de loop(laos), tomada de deciso, e de armazenamento de valores de variveis. O Shell o "prompt" da linha de comando do Linux, o servo que recebe os comandos digitados pelo usurio e os executa. O Shell aquele que aparece logo aps se digitar a senha do usurio e entrar na tela preta do Linux. Ou na interface grfica, ao clicar no cone do Xterm ou do rxvt.
Shell Script Um script um arquivo que guarda vrios comandos e pode ser
Um script um arquivo que guarda vrios comandos e pode ser executado sempre que preciso. Os comandos de um script so exatamente os mesmos que se digita no prompt, tudo Shell. Se de tempos em tempos voc quer saber informaes do sistema como horrio, ocupao do disco e os usurios que esto logados, preciso digitar trs comandos. melhor fazer um script chamado "sistema" e colocar os comandos nele. Para que o script entre em execuo ele precisa ter permisso de execuo no sistema que pode ser realizada com o comando chmod + x sistema ou chmod 755 e ser colocado em execuo com o coamando ./sistema
O Shell um programa interpretador de comandos que foi escrito em diferentes verses. Bourne Shell
Shell padro do UNIX. Escrito por Stephen Bourne da Bell Labs, tambm chamado de Standard Shell Representao para UNIX sh
Principais Shells
Bourne-Again Shell
Shell padro do Linux 100 % compatvel com o Bourne Shell, com comandos adicionais para Korn
Shell e C Shell.
Representao para Linux bash
Korn Shell
Desenvolvido por David Korn da Bell Labs da AT&T. Atualizao do Bourne Shell, com maior nmero de comandos Representao para o UNIX ksh
C Shell
Desnvolvido por Bill Joy da Berkeley University, sendo o mais utilizado em
BSD
Cabealhos Inicias
O caracter # considerado comentrio pelo interpretador de comandos. Mas quando a primeira linha de um script inicia por #!, o Shell entender que o que vem a seguir o caminho(path) para o interpretador que ser usudo pelo este script. Exemplos: #!/bin/bash #!/bin/sh #!/bin/awk #!/bin/sed
O que estiver entre crase(`) um comando Exemplo: echo " Nome do coputador e `uname -n`" Sada: Nome do coputador e compuador1
O contedo da varivel acessado colocandose um cifro "$" na frente O comando test muito til para fazer vrios tipos de checagens em textos e arquivos O operador lgico "&&", s executa o segundo comando caso o primeiro tenha sido OK. O operador inverso o "||"
Definido Variveis
Para definir uma varivel, basta usar o sinal de igual "=" e para ver seu valor, usase o "echo": prompt$ VARIAVEL="um dois tres" prompt$ echo $VARIAVEL um dois tres prompt$ echo $VARIAVEL $VARIAVEL um dois tres um dois tres prompt$
Ateno:No podem haver espaos ao redor do igual "="
Definido Variveis
possvel armazenar a sada de um comando dentro de uma varivel. Ao invs de aspas, o comando deve ser colocado entre "$(...)" prompt$ HOJE=$(date) prompt$ echo "Hoje : $HOJE" Hoje : Sb Abr 24 18:40:00 BRT 2004 prompt$ unset HOJE prompt$ echo $HOJE prompt$
Ateno:o comando "unset" apaga uma varivel. Para ver quais as variveis que o Shell j define por padro, use o comando "env"
Detalhes de comandos
Diferente de outras linguagens de programao, o Shell no usa os parnteses para separar o comando de seus argumentos, mas sim o espao em branco. O formato de um comando sempre: COMANDO OPES PARMETROS Exemplo: "cat" mostra o contedo de um arquivo. n sistema" mostra o script sistema, com as linhas "cat numeradas. O "read" um comando do prprio Shell para leitura. "date"" um executvel do sistema.
Detalhes de comandos
Use "man comando" ou "comando help" para obter mais informaes sobrecada um deles.
Detalhes de comandos
Em Shell possvel combinar comandos, aplicandoos em seqncia, para formar um comando completo. Usando o pipe "|" possvel canalizar a sada de um comando diretamente para a entrada de outro, fazendo uma cadeia de comandos.
prompt$ cat /etc/passwd | grep root | cut c110 root:x:0:0 operator:x prompt$
cat - Mostra o arquivo todo grep- pega essa sada e extrai apenas as linhas que contm a palavra "root" cut- extrai somente nessas linhas que o grep achou,extrai os 10 primeiros caracteres.
Detalhes de comandos
possvel redirecionar a sada de um comando para um arquivo ao invs da tela, usando o operador ">". Para guardar a sada do comando anterior no arquivo "saida", o comando a ser exucutado dever ser:
prompt$ cat /etc/passwd | grep root | cut c110 > saida prompt$ cat saida root:x:0:0 operator:x prompt$
Detalhes de comandos
O comando test
Consegue fazer vrios tipos de checagens, em nmeros, textos e
arquivos. Ele possui vrias opes para indicar que tipo de teste ser feito, algumas delas:
Detalhes de comandos
Exerccio Fazer o script "testa arquivos", que pede ao usurio para digitar um arquivo e testa se este arquivo existe. Se sim, diz se um arquivo ou um diretrio. Exemplo de uso
prompt$ testaarquivos Digite o arquivo: /naoexiste O arquivo '/naoexiste' no foi encontrado prompt$ testaarquivos Digite o arquivo: /tmp /tmp um diretrio prompt$ testaarquivos Digite o arquivo: /etc/passwd /etc/passwd um arquivo prompt$
Detalhes de comandos
Resposta do Exerccio #!/bin/bash echo n "Digite o arquivo: "; read ARQUIVO [ d "$ARQUIVO" ] && echo "$ARQUIVO um diretrio" [ f "$ARQUIVO" ] && echo "$ARQUIVO um arquivo" [ f "$ARQUIVO" o d "$ARQUIVO" ] || echo "O arquivo '$ARQUIVO' no foi encontrado" echo
prompt$ ./argumentos um dois trs O nome deste script : ./argumentos Recebidos 3 argumentos: um dois trs O primeiro argumento recebido foi: um O segundo argumento recebido foi: dois
Expresses Aritmticas
O Shell tambm sabe fazer contas. A construo usada para indicar uma expresso aritmtica "$((...))", com dois parnteses. prompt$ echo $((2*3)) 6 prompt$ echo $((2*32/2+3)) 8 prompt$ NUM=44 prompt$ echo $((NUM*2)) 88 prompt$ NUM=$((NUM+1)) prompt$ echo $NUM 45
if test "$VARIAVEL" gt 10 then echo " maior que 10" else echo " menor que 10" fi
Exerccios
1- Crie um Script Shell que leia dois nmeros a ralao entre eles. prompt$ ./relacao.sh 3 5 3 menor 5 prompt$ ./relacao.sh 5 3 5 maior 3 prompt$ ./relacao.sh 5 5 5 igual 5 2- Recebe um nmero como parmetro e o diminui at chegar a zero, mostrando na tela cada passo, em uma mesma linha. prompt$ ./zerador.sh 5 5 4 3 2 1 0 prompt$ ./zerador.sh 10 10 9 8 7 6 5 4 3 2 1 0 Agora que voc j teve o primeiro contato v para apgina da disciplina e tente terminar os demais exerccios.