linux shell

20
Fundamentos de Programação Aplicada a Redes - Shell Script Linux Shell Frederico Madeira LPIC-1, LPIC-2, CCNA [email protected] www.madeira.eng.br

Upload: frederico-madeira

Post on 27-Jun-2015

2.541 views

Category:

Documents


2 download

DESCRIPTION

Aula sobre Linux Shell

TRANSCRIPT

Page 1: Linux shell

Fundamentos de Programação Aplicada a Redes ­ Shell ScriptLinux Shell

Frederico MadeiraLPIC­1, LPIC­2, [email protected]

Page 2: Linux shell

Shell

“É qualquer interface de usuário para o SO Unix. que receba

do usuário um input e a converta em instrução para que o SO

entenda.”

Shell Script

“É um arquivo que contém uma série de comandos, funções,

rotinas que são executadas quando o shell script é executado.

Se digitarmos comando a comando diretamente no shell, o

resultado será o mesmo”

Shell

Page 3: Linux shell

Exemplos de ShellBourne(sh), C shell (csh), Korn (ksh) - comercial, bash (free)

Fonte: Linux Magazine, vol 01. Por Julio Cezar Neves

Qual Shell estou usando ?[root@localhost fred_m]# echo $SHELL/bin/bash

Shell

Page 4: Linux shell

– Definem como o programa será executado.

– Consiste em uma ou mais palavras, que são separadas por espaços ou TABs.

– A primeira palavra é o comando

– As palavras restantes são os argumentos/parâmetros

Ex:

• [root@localhost fred_m]# vi teste.txt

• [root@localhost fred_m]# ls /tmp

• [root@localhost fred_m]# ls

Comandos

Page 5: Linux shell

– Informação extra passada para a execução do comando

– Podem ser nome de objetos ou definir como o comando irá funcionar

– Ex: [root@localhost fred_m]# cat /proc/cpuinfo

– Opções

• Argumentos especiais que dá ao comando instruções específicas de como se comportar

• Usualmente consiste em um – seguido de uma letra

EX: – [root@localhost fred_m]# uname -s– [root@localhost fred_m]# uname -m– [root@localhost fred_m]# uname -p– [root@localhost fred_m]# uname -a

• Podem conter seus próprios argumentos

EX: – [root@localhost fred_m]# lp -d lp1 -h myfile

Onde: -d define a impressora lp1 | -h imprimir banner | myfile arquivo a ser impress

Argumento

Page 6: Linux shell

- Arquivos Regulares

– Arquivos de texto

- Arquivos Executáveis

– Também chamados de programas

– São executados como comandos

– Podem ser:

• Compilados

• Shell Scripts

- Diretórios

Arquivos

Page 7: Linux shell

• Identificada quando o Shell encontra um sinal de igualdade (=)

• Separa dois campos sem espaços em branco, entre o (=).

• Criam variáveis

• Variáveis podem ser lidas pelo comando echo

Ex:

Errado:

[root@madeira ~]# $VAR=a

bash: =a: command not found...

Certo:

[root@madeira ~]# VAR=ab

Atribuições

Page 8: Linux shell

Armazenam informações durante execução do script ou sistema

– Atribuindo valor

VARIAVEL=“Teste Linux”

– Exibindo o valor

echo $VARIAVEL

– Atribuindo a saída de um comando

VARIAVEL=$(date)

VARIAVEL=`date`

– Limpando uma variável

unset VARIAVEL

– Listando todas as variáveis

env ou set

Variáveis

Page 9: Linux shell

Aspas “ ”

Ex.: echo “Sou o usuario $USER”

Apóstrofos ' '

Ex.: echo 'Sou o usuario $USER'

Ex.: echo 'Linha com espaços :'

Barra invertida \

Ex.: echo \\

Crase

ex.: echo “Este host chama-se `uname -n`”

Parêteses

ex.: echo “Este host chama-se $(uname -n)”

Prática

Page 10: Linux shell

– Atribuindo valor

NOME=”Frederico Madeira”

– Exibindo o valor

echo $VARIAVEL

– Atribuindo a saída de um comando

HOJE=$(date +"%Y%m%d")

echo $HOJE

AGORA=`+"%H:%M"`

echo $AGORA

– Visualizando todas as variáveis

set

env

– Limpando uma variável

unset NOME

unset HOJE AGORA

Prática

Page 11: Linux shell

- MetacaracteresCaracteres com significado especialEx: &, >, <, |

- Caracteres Coringas (wildcards)Caracteres especiais usados junto com os argumentosEx: *, ?, [abc], [a-c],[!0-9]

Características de um Shell

Page 12: Linux shell

- Entrada Padrão (stdin) Entrada padrão de comandos para o shellEx: teclado, pipe

- Saída Padrão (stdout) Saída padrão do do comandoEx: tela, arquivo

- Saída de Erro (stderr) Saída padrão para erros de execução do comandoEx: tela, arquivo

Conceitos

Page 13: Linux shell

É Case Sensitive

.. - Indica o diretório anterior

. - Indica o diretório atual

~ - Indica o diretório home do usuário

# - Comentário

[fred_m@localhost teste]$ - Indica conexão sem privilégios de root

[root@localhost teste]# - Indica conexão com privilégios de root

Conceitos

Page 14: Linux shell

$ - Definição de variáveis

.xxxx - arquivos ocultos

| - pipe

& (como bg) - Envia aplicativo para background

--help – Obtém ajuda sobre utilização do comando

Conceitos

Page 15: Linux shell

> : Redireciona a saída padrão do comando a esquerda para o arquivo a direita, sobrescrevendo todo o conteúdo.

>> : Redireciona a saída padrão do comando a esquerda para o arquivo a direita, adicionando o conteúdo ao final do arquivo.

| : Pipe, redireciona a saída padrão do primeiro comando para a entrada padrão do segundo comando.

Ex:

$ cat /etc/passwd | grep root > /tmp/root

$ ping -c 1 www.madeira.eng.br > /dev/null

OBS: /dev/null , representa lugar nenhum

Redirecionamento

Page 16: Linux shell

stderr (2): Saída de Erro.

Para redirecionar a saída de erro, usamos: 2>

stdout(1): Saída do comando

Para redirecionar a saída do comando, usamos: 1>

Para redirecionar ambas usamos: &>

Ex:

Saída do comando

[fred@localhost Linux]$ ping www.madeira.eng.br

PING www.madeira.eng.br (69.16.250.4) 56(84) bytes of data.

64 bytes from noc88.noc88.com (69.16.250.4): icmp_seq=1 ttl=45 time=300 ms

Saída de erro

[fred@localhost Linux]$ ping www.madeira.eng.br1

ping: unknown host www.madeira.eng.br1

Redirecionamento Saída Padrão/Erro

Page 17: Linux shell

Comando ok, redir saída de erro

[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br 2> /dev/null

PING www.madeira.eng.br (69.16.250.4) 56(84) bytes of data.

64 bytes from noc88.noc88.com (69.16.250.4): icmp_seq=1 ttl=45 time=250 ms

Comando errado, redir saída de erro

[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br1 2> /dev/null

Comando ok, redir saída do comando

[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br 1> /dev/null

Comando errado, redir saída do comando

[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br1 1> /dev/null

ping: unknown host www.madeira.eng.br1

Comando ok, redir saída do comando e saída de erro

[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br &> /dev/null

Comando errado, redir saída do comando e saída de erro

[fred@localhost Linux]$ ping -c 1 www.madeira.eng.br1 &> /dev/null

Redirecionamento Saída Padrão/Erro

Page 18: Linux shell

&& - equivalente ao E. O próximo comando só será executado se o anterior

tiver sido bem sucedido.

|| - equivalente ao OU. Se o comando anterior não for bem sucedido, será executado o próximo comando. OU um OU outro.

Ex:

$ ping -c 1 www.madeira.eng.br && echo “Site está ok” || echo “Site fora do ar”

Forma mais elegante:

$ ping -c 1 www.madeira.eng.br &> /dev/null && echo “Site está ok” || echo

“Site fora do ar”

$ mkfs.ext3 /dev/sda1 && echo “Formatação OK” || echo “Erro na formatação”

Lógica

Page 19: Linux shell

Prática

1. Redirecione a saída de erro dos comandos abaixo para o arquivo /tmp/error.log

2. Repita a questão anterior, redirecionando também a saída padrão para /tmp/saida.log (Não sobrescreva os arquivos)

3. Execute os comandos abaixo e retorne as seguintes mensagens (Execute o com ando com um usuário normal):

Redirecionamento Saída Padrão/Erro

Comando Mensagem OK

Mensagem em caso de NOK

cat /etc/passwd Listagem OK Falha na listagem

cat /etc/audit Listagem OK Falha na listagem

tar xvfz teste.tar.gz

ifconfig ppp0

ifconfig eth0

Page 20: Linux shell

Fundamentos de Programação Aplicada a Redes ­ Shell ScriptLinux Shell

Frederico MadeiraLPIC­1, LPIC­2, [email protected]