Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de...

115
Computadores e Sociedade Software Livre GNU/Linux parte2 Prof. Jefer - [email protected] people.ufpr.br/~jefer

Transcript of Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de...

Page 1: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Computadores e SociedadeSoftware LivreGNU/Linuxparte2

Prof. Jefer - [email protected]

people.ufpr.br/~jefer

Page 2: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Prof. Jefer Benedett Dörr

● Coordenador do curso de Licenciatura em Computação - UFPR Setor Palotina

● Mestre em Informática - UFPR● Especialista em Software Livre com ênfase

em Redes - UNIPAN● Bacharel em Informática - UNIOESTE

[email protected]

Page 3: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Etapa 5

Administração do Sistema

https://www.youtube.com/watch?v=udhd9fmOdCs

Page 4: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Editores de texto

mcedit

nano

pico

vi

vim

emacs

Page 5: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Criação e administração de usuários

useradd: apenas cria o usuário;

adduser: cria usuário automatizado;

passwd: altera a senha;

usermod: modifica uma conta;

userdel: remove usuário e arquivos;

deluser: remove apenas o usuário;

Page 6: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Criação e Administração de grupos

groupadd: adiciona grupo ao sistema;

gpasswd: grava senha para o grupo;

groupdel: remove o grupo do sistema;

chage: configura expiração da conta;chage -E 2016-12-25 jefer

Page 7: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Gerenciamento de Permissões

Page 8: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

drwx------ ... 2 jefer ............. 512 Jan ... 29 23:30 .. Arquivos/-rw-rw-r-- ... 1 jefer ....... 280232 Dec .. 16 22:41... notas.txt

r => significa permissão de leitura (read); w => significa permissão de gravação (write); x => significa permissão de execução (execution); - => significa permissão desabilitada.

Page 9: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Permissão Binário Decimal

--- 000 0--x 001 1-w- 010 2-wx 011 3r-- 100 4r-x 101 5rw- 110 6rwx 111 7

Page 10: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

A ordem em que as permissões devem aparecer é rwx.

Sendo assim, vamos entender a string do nosso exemplo dividindo-a em 4 partes:

D r w x - - - - - -

- é um diretório (d);- o proprietário pode alterá-lo, gravá-lo e executá-lo (rwx);- o grupo não pode pode alterá-lo, gravá-lo, nem executá-lo (- - -);- os demais usuários não podem alterá-lo, gravá-lo, nem executá-lo (- - -).

Page 11: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

chmod

chmod:

$ chmod 755 leiame.txt

$ chmod u=rwx, go=rx leiame.txt

$ chmod +x shell.sh

Page 12: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

chown

Chown altera dono e grupo

$ chown jefer.posutfpr leiame.txt

$ chowm .posutfpr leiame.txt

$ chown -R jefer /home/jefer

Page 13: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

chgrp

chgrp altera o grupo;

$ chgrp -R users /home

Page 14: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Instalação e gerenciamento de pacotes

Page 15: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

apt

O APT busca em /etc/apt/sources.list por sua lista de origens (sources)

http://www.debian.org/doc/manuals/apt-howto/index.pt-br.html

Page 16: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Atualizando seu cache de pacotes local

Toda vez que você quiser instalar ou atualizar um aplicativo, você primeiramente, deveráatualizar seu cachê de pacotes. Isso assegura que você tenha as últimas informaçõessobre o aplicativo que você está instalando.prompt$ apt-get update

Page 17: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Vendo os pacotes disponíveis

O utilitário apt-cache permite a você buscar no cachê de pacotes local por pacotes quecontém certos textos.prompt$ apt-cache search apache

Este comando retornou 119 pacotes na minha máquina. Em vez de ler todas as entradas, pode-se filtrar os resultados usando o comando grep

$ apt-cache search apache | grep "^apache"

Page 18: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Ver informações de um pacote prompt$ apt-cache show nomedopacote

Instalar um pacote$ apt-get install nomedopacote

Removendo um pacote$ apt-get remove nomedopacote

Mantendo seu sistema atualizado$ apt-get update$ apt-get upgrade

Page 19: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

dpdddDD O dpkg complementa o apt-get, permitindo instalar pacotes .

deb baixados manualmente.

Digamos que você tenha baixado, por exemplo, o arquivo "skype_1.2.0.18-1_i386.deb", o pacote com o Skype, disponível no http://skype.com.

Para instalá-lo, você usaria o comando:# dpkg -i skype_1.2.0.18-1_i386.deb

DPKG

Page 20: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Gerenciamento de partições

/dev/hdX ou /dev/sdX

fdisk: criar, listar, alterar e apagar partições; fdisk /dev/sda

mkfs: formata as partições; mkfs -t vfat -I /dev/sdb

mkswap: prepara a partição para trabalhar como swap;

df: capacidade utilizada do disco;

du: utilização do disco;

fsck: checa e corrige erros;

/etc/fstab

Page 21: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Volumes lógicos (LVM)

Page 22: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

SWAP

cat /proc/swaps

free -ht s1

cat /proc/sys/vm/drop_caches

Limpar: sysctl -w vm.drop_caches=1

Page 23: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Montagem e desmontagem de dispositivos

mount [opções] [dispositivo] [ponto_de_montagem]

● -a : monta todos os sistemas de arquivos especificados no arquivo

/etc/fstab.

● ro - monta somente como leitura;

O arquivo /etc/mtab possui a lista de todos os sistemas de arquivos

atualmente montados no Linux.

O comando mount sem parâmetros faz o sistema listar o conteúdo do

arquivo /etc/mtab.

● umount - desmonta sistemas de arquivos.

Page 24: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Compactação e descompactação de arquivos

tar

$ tar -cvf <arquivo_final> <origem>

-c: create-v: verbosa-f: será definido nome do arquivo final<origem>: arquivo ou diretório que será compactado

Exemplos:

$ tar -cvf teste.tar *

Page 25: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

tar

$ tar -cvf /tmp/gifs.tar /var/www/htnl/*.tar

Descompactar: (-x descompacta o arquivo f)

$ tar -xvf arquivo.tar

Outras opções: (gzip/gunzip, tar+gzip, tar+bzip)

Page 26: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Comandos para gerenciamento de redes

$ ping

$ ifconfig : ifconfig eth0 down : ifconfig eth0 10.0.0.1 netmask 255.0.0.0

$ ifup / ifdown : ativa ou desativa a interface de rede definada em /etc/network

$ route: route add default gw 10.0.0.100 : route del default gw 10.0.0.100

$ dhclient eth0: solicitar dados de rede

Page 27: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

$ mii-tool: negociação de link de rede

$ ethtool eth0

$ linx/links/elinks/links2 : navegadores

$ wget: download de arquivos

$ netstat: -tunap

$nmap

$ whois: dados sobre domínios

Page 28: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

$ geoiplookup: localização geográfica do ip

$ iptraf: tráfego de rede

$ ethstatus -i eth0

$ ipcalc 192.168.1.0/255.255.255.0

$ dig www.utfpr.br.edu (dnsutils)

$ tcpdump: analisar de tráfego: tcpdump -nAi eth0 udp

$ hostname

Page 29: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Gerenciamento de Contas

susuxwwhoami

adduseruseradduserdelpasswd

Page 30: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Gerenciamento de Arquivos/Diretórios

cattailheadnanomceditmd5sumddwhichdetoxdfdudurep

mkdirrmdircdpwdlsstatrmwipecpmvfind locatechmod

chown lndiffcmptouchfiletree

Page 31: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Gerenciamento de Processos

Memóriafreememstatpmap pidtophtopiotopstress

Processospskillkillalljobs -lbgfgtimenohupstrace (strace -c ls /home)

renice renice +19 1000 -u jeferl

nice nice -n -5 ntpd

ionicefuser .

lsof -u user

Page 32: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Agendamento de Tarefas

cron

$ crontab -l

$ crontab -r

$ crontab -e

sintaxe: minuto hora dia_do_mês mês dia_da_semana /path/comando

15 23 * * * /sbin/reboot

0 0,12 * * 1-3 /sbin/reboot

*/10 * * * * /sbin/reboot

Page 33: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

a=`df -h | grep sda6 | cut -d"%" -f1 | tr -s " " | cut -d " " -f5`

if [$a -gt 80] then echo " hd com $a" fi

Diretórios de agendamento

/etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly

Page 34: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Etapa 6

Shell Script

1. Introdução2. Instalação3. Virtualização4. Comandos básicos5. Administração do Sistema6. Shell Script

jefer@acer:~$ cor=azuljefer@acer:~$ echo corCorjefer@acer:~$ echo $corazul

Page 35: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Iniciando#!/bin/bashecho 'Nossa!Estou vivo!' Tornemos então o arquivo executável:

chmod +x arquivo.sh

Ou chmod 755 arquivo.sh

Para executar: ./arquivo.sh

Page 36: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

bash

Se você der o comando "ps", vai ver que um dos programas rodando é o seu shell:

jefer@acer:~$ psPID TTY TIME CMD164 tty2 00:00:00 bash213 tty2 00:00:00 psjefer@acer:~$

Ou seja, o shell utilizado nesse console é o bash, que está rodando com PID 164.

Page 37: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Onde tem shell?

Quer exemplos?

file /usr/bin/* | grep shell

Page 38: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Shell

É muito perigoso estudar shell usando o superusuário, você pode danificar o sistema com um comando errado.

Se você não tem certeza qual o seu usuário, use o comando "whoami" para saber

Page 39: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Formato de Arquivos

A primeira linha de todo shell script deve começar com algo do tipo: #!/bin/bash , a qual indica com qual shell deverá ser executado o script.

Bourne Shell (sh)

Korn Shell (ksh)

Boune Again Shell (bash) *

C Shell (csh)

Page 40: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Variáveis de Ambiente

Algumas variáveis já são predefinidas no shell, como o PATH, que armazena o caminho dos programas. Por exemplo, a minha variável PATH contém:jefer@acer:~$ echo $PATH

/usr/local/bin:/usr/bin: /bin: /usr/X11R6/bin: /usr/openwin/bin: /usr/games: /opt/kde/bin: /usr/share/texmf/bin: /etc/script

É importante destacar que o shell possui várias variáveis pré-definidas, ou seja, que possuem um significado especial para ele, entre elas: PATH, PWD, PS1, PS2, USER e UID.

Para conhecer mais variáveis de ambiente digite:env

Page 41: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Variáveis

Prompt$ HOJE=$(date)echo "Hoje é: $HOJE"Sáb Abr 24 18:40:00 BRT 2004unset HOJEecho $HOJE

Page 42: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

$ variavel="Eu estou logado como usuário $user"$ echo $variavel Eu estou logado como usuário cla

$ variavel='Eu estou logado como usuário $user'$ echo $variavel Eu estou logado como usuário $user

$ variavel="Meu diretório atual é o `pwd`"$ echo $variavel Meu diretório atual é o /home/cla

Page 43: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

ParâmetrosParâmetros$0 : é o nome do shell script (parâmetro zero);$1 a $9 : $1 é o primeiro parâmetro, $9 o nono, assim por diante;${10}, ${11}.. quando o número do parâmetro possui mais de um dígito é necessário o uso das chaves;$* : todos os parâmetros em uma única string (exceto o $0);$@todos os parâmetros, cada um em string separadas (exceto $0);$# número de parâmetros (sem contar com o $0)$? valor de retorno do último comando;$$ PID do script.

Page 44: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Parametros.sh!/bin/bash# "basename" serve para eliminar o caminho do arquivo emostrar# somente o último nome dele. Neste caso: parametros.shecho "Nome do script: `basename $0`"echo "Número total de parâmetros: $#"echo "Primeiro parâmetro: $1"echo "Segundo parâmetro: $2"echo "Décimo quinto parâmetro: ${15}"echo "Todos os parâmetros: $*"

Page 45: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

$ ./parametros.sh a b c d e f g h i j l m n o p q r s t u v x zNome do script: parametros.shNúmero total de parâmetros: 23Primeiro parâmetro: aSegundo parâmetro: bDécimo quinto parâmetro: pTodos os parâmetros: a b c d e f g h i j l m n o p q r s t u v x z

Page 46: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Passagem de Parâmetros

find / -name file -print

#!/bin/bash find / -name $1 -print

#o bash lê a variável "$1", ele a substitui pelo primeiro parâmetro passado na linha de comando para o nosso script.

Page 47: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

;

#!/bin/bashecho "Vou buscar data do sistema. Posso continuar? [sn] " ; read RESPOSTA; test "$RESPOSTA" = "n" && exitecho "Data e Horário:" ;date

Page 48: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Exemplo IF

#!/bin/bash read -p 'Qual foi sua nota na Prova?' nota if test -n "$nota" then if test "$nota" -gt 7 then echo "voce esta aprovado!" else if test "$nota" -eq 10 then echo "show! gabaritou!" else if test "$nota" -ge 2 && test "$nota" -lt 5 then echo "reprovado!" else if test "$nota" -lt 2 then echo "assinou o nome?" else echo "voce apenas passou!" fi ;fi ;fi ; fi ; fi

Page 49: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

test

Page 50: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Interagindo c/ test

#!/bin/bashecho "Vou buscar os dados do sistema. Posso continuar? [s/n] "read RESPOSTAtest "$RESPOSTA" = "n" && exitecho "Data e Horário:"dateecho "Uso do disco:"dfecho "Usuários conectados:"w

Page 51: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Expressões usando strings:

O test pode apenas comparar strings, ou seja, verificar se uma é igual a outra, e verificar se uma string é vazia ou não. Vamos aos exemplos para facilitar o entendimento:jefer@acer:~$ test "a" = "a"jefer@acer:~$ echo $?0

jefer@acer:~$ test "a" = "b"jefer@acer:~$ echo $?1

jefer@acer:~$ test "a" != "b"jefer@acer:~$ echo $?0

Page 52: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

jefer@acer:~$ test -z neo"jefer@acer:~$ echo $?1jefer@acer:~$ test -z ""jefer@acer:~$ echo $?0jefer@acer:~$ test -n “neo"jefer@acer:~$ echo $?0jefer@acer:~$ test -n ""jefer@acer:~$ echo $?1

Ao lado temos os testes de vazio. A opção "-z" verifica se é vazio, e "-n" se não é vazio.

No primeiro caso, ele testa se "neo" é uma string vazia, retornando falso.

No segundo caso, como "" é vazia, retorna verdadeiro.

O terceiro e quarto são semelhantes aos primeiros, mas com "-n".

Page 53: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Expressões com arquivos:

Os testes que podem ser feitos com arquivos são para verificar determinadas caracteristicas, como se ele existe, se é executável, se é um link simbólico, se é um diretório etc.

Alguns exemplos:A opção "-e" verifica apenas se um arquivo existe e a opção "-d" verifica se o arquivo é um diretório.

A opção "-nt" verifica se o primeiro arquivo é mais novo que o segundo (nt = newer than) e "-ot" verifica se o primeiro é mais velho que o segundo (od = older than):

Page 54: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

jefer@acer:~$ test -e vmlinuzjefer@acer:~$ echo $?0jefer@acer:~$ test -d vmlinuzjefer@acer:~$ echo $?1jefer@acer:~$ test -e /usrjefer@acer:~$ echo $?0

jefer@acer:~$ test -d /usrjefer@acer:~$ echo $?0jefer@acer:~$ test /usr -nt /vmlinuzjefer@acer:~$ echo $?0jefer@acer:~$ test /usr -ot /vmlinuzjefer@acer:~$ echo $?1

Page 55: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

A seguir, uma lista de várias opções disponíveis:

* -b arquivo - Verdadeiro se arquivo é um arquivo de bloco, como /dev/hda. * -c arquivo - Verdadeiro se arquivo é um arquivo de caracter, como /dev/tty1. * -d arquivo - Verdadeiro se arquivo é um diretório. * -e arquivo - Verdadeiro se arquivo existe. * -f arquivo - Verdadeiro se arquivo existe e é um arquivo comum. * -s arquivo - Verdadeiro se arquivo existe e não é vazio. * -h arquivo - Verdadeiro se arquivo é um link simbólico. * -p arquivo - Verdadeiro se arquivo é um "named pipe" (fifo, lifo, etc).

Page 56: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

* -S arquivo - Verdadeiro se arquivo é um "socket". * -r arquivo - Verdadeiro se arquivo pode ser lido pelo usuário atual. * -w arquivo - Verdadeiro se arquivo pode ser escrito pelo usuário atual. * -x arquivo - Verdadeiro se arquivo pode ser executado pelo usuário atual. * -O arquivo - Verdadeiro se arquivo pertence ao usuário atual. * -G arquivo - Verdadeiro se arquivo pertence ao grupo do usuário atual. * -N arquivo - Verdadeiro se arquivo foi modificado desde a ultima vez que foi lido.

Page 57: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Execução em foreground e background

o sinal de & depois de um comando.

Exemplo:jefer@acer:~$ cp arquivo1 arquivo2 &[1] 206

A primeira informação ([1]) chama-se job. Ela identifica os programas que estão sendo executados em bg (background). A segunda informação (206) é o pid do programa, ou seja, o número de processo que o kernel dá a esse programa.

Para retornar, usamos o comando fg [job]

Page 58: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Pipes, redirecionamento e backtick

Não são realmente comandos mas são conceitos muito importantes.

pipes (|) envia o output (stdout) de um programa para o input (stdin) de um outro programa. cat ficheiro.txt |grep palavra | wc -l

procura as linhas com a string PALAVRA no ficheiro.txt e conta as linhas.

O output do comando grep é utilizado como input para o comando wc. Dessa forma você pode concatenar os comandos que queira

Page 59: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

redirecionamento: escreve o output de um comando para um aruivo ou adiciona dados a um ficheiro:

> escreve o output para um arquivo e sobrepõe o arquivo antigo caso ele existirEx.: echo oi > oi.txt

echo ola > oi.txt

>> adiciona dados a um arquivo (ou cria um novo se ele ainda não existir mas nunca sobrepõe nada).Ex.: echo oi >> oi2.txt

echo oii >> oi2.txt

Page 60: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

BacktickO output de um comando pode ser utilizado como argumento da linha de comandos para um outro comando. Você pode também utiliza-lo para definir o output de um comando para uma variável.

O comando: find . -mtime -1 -type f -print

procura todos os ficheiros que foram modificados nas ultimas 24 horas (-mtime -2 significaria 48 horas).

Page 61: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Se você quer armazenar esse ficheiros num arquivo tar (ficheiro.tar) a syntax para o tar teria de ser:

tar xvf ficheiro.tar ficheiro1 ficheiro2 ...

Em vez de escrever isso tudo, você pode combinar 2 comandos (find e tar) utilizando backticks. Tar irá arquivar todos os ficheiro que find escreveu:

#!/bin/sh# Backticks (`) , não plicas ('):tar -zcvf ultimamod.tar.gz `find . -mtime -1 -type f -print`

Page 62: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Estruturas de ControleDesvio e Repetição

Page 63: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Estruturas de DesvioCondicionais são comandos que avaliam uma expressão. Se ela for verdadeira, uma determinada rotina é executada. Caso contrário, outra rotina pode ser executada.Controle de fluxo com:IfCaseSelect

Page 64: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

if

o comando IF (ele é um comando embutido no bash e não um programa como o "ls", o "cp" etc.). A forma mais simples de representar uma condicional utilizando o IF, é da seguinte forma básica:

if [condição];then comandos1;else comandos2;fi;

Se [condição] for verdadeira, os comandos1 são executados. Se for falsa, os comandos2 são executados.Mas para o IF, o que é uma condição verdadeira ou uma falsa?

Page 65: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Se [condição] for verdadeira, os comandos1 são executados. Se for falsa, os comandos2 são executados.Mas para o IF, o que é uma condição verdadeira ou uma falsa?

TODO comando em Unix tem um código de retorno. Geralmente o código "0" (zero) significa que o comando foi executado perfeitamente e terminou bem. Códigos maiores que zero significam que alguma coisa de errado ocorreu.

É assim que o IF verifica uma condição. Se o seu código de retorno for zero, então ela é considerada verdadeira. Caso contrario, ela é falsa.Mas então a [condição] tem que ser um comando, certo?

Page 66: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Exemplo:jefer@acer:~$ if ls /boot; then echo "O diretório existe."; else echo "Diretório inválido."; fi;

System.map boot.0300 boot.b boot_message.txt chain.b config map os2_d.bO diretório existe.

Page 67: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

O que aconteceu?Logo após o if, nós colocamos um comando: "ls /boot". O que o IF faz? Ele executa esse comando (por isso que temos a segunda linha começada por "System.map", que é o conteúdo do meu diretório /boot) e avalia o seu código de saída. Como o "ls" foi executado corretamente, ele retorna zero, significando verdadeiro para o IF, que executa o comando logo após o "then", ou seja, o echo "O diretório existe.", mostrando essa mensagem no console.

Page 68: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Agora vamos colocar um diretório que não existe:

jefer@acer:~$ if ls /dir_invalido; then echo "O diretório existe."; else echo "Diretório inválido."; fi;/bin/ls: /dir_invalido: Arquivo ou diretório não encontradoDiretório inválido.

A lógica é a mesma. Executa o "ls /dir_invalido", que retorna um código maior que zero. O IF avalia como falso e executa o comando após o else: echo "Diretório inválido"..

Page 69: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

if [ -e $linux ]then echo 'A variável $linux existe.'else echo 'A variável $linux não existe.'fi

O que este pedaço de código faz? O if testa a seguinte expressão: Se a variável $linux existir, então (then) ele diz que que existe com o echo, se não (else), ele diz que não existe.

Page 70: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

case

geralmente é utilizado como substituição de vários IFs. Um exemplo clássico e muito utilizado é quando precisa testar um parâmetro fornecido na linha de comando. O Case é utilizado desta forma em scripts de inicialização de serviços do sistema.

Exemplo: um script que inicialize/reinicialize ou pare algum serviço (como o sendmail, apache, bind, etc).

Page 71: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Sintaxe:case <parâmetro> in opção 1 ) <comandos 1> ;; opção2 ) <comandos 2> ;; * ) < comandos se não for nenhuma das opções > ;;esac

Page 72: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Explicação: O Case pega a string fornecida em <parâmetro> e compara com <opção 1>. Se forem iguais, ele executa <comandos 1> e sai fora. Caso contrario, ele compara <parâmetro> com <opção 2> e assim por diante.

Caso <parâmetro> não seja igual a nenhuma das opções, ele executa os comandos da opção "*", se este existir.

IMPORTANTE: Prestem atenção a alguns detalhes na sintaxe. Deve existir um ")" após cada opção e também um ";;" após todos os comandos de cada opção. Vejam o exemplo:

Page 73: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

case "$1" in 'start' ) echo "Iniciando o serviço..." <comandos para iniciar o serviço> ;; 'restart' ) echo "Reinicializando o serviço..." <comandos para reinicializar o serviço> ;; 'stop' ) echo "Parando o serviço..." <comandos para parar o serviço> ;; *) echo "Opção invalida!" echo "As opções válidas são: start, stop e restart" ;;esac

Page 74: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

O Case serve para evitar o teste de vários Ifs. No caso acima, teríamos que utilizar 3 Ifs. Mesmo se o primeiro já fosse verdadeiro, o bash iria testar o segundo e o terceiro, ou seja, ia perder tempo desnecessariamente. Já no case isso não acontece. Após entrar em uma opção e executar seus comandos, ele já pula fora do case sem testar as outras opções abaixo.

Page 75: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

select

O Select é um comando de laço que nos permite mostrar um pequeno menuzinho de opções para o usuário. Cada opção possui um número e para escolher, o usuário digita o número correspondente a opção desejada. Vejamos a sintaxe a seguir:

select <var> in <lista de opções>;do <comandos>done;

Page 76: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

o select vai mostrar as opções contidas em <lista de opções>, uma por linha, com um número na frente e espera que o usuário digite a opção desejada. Ao digitar a opção, o select atribui o nome da opção a variável <var> e executa os comandos. Para sair do select, é necessário executar o comando "break". Vamos a um exemplo:

select x in Iniciar Reiniciar Parar Sair; do echo "Opção Escolhida: $x" if [ "$x" == "Sair" ]; then break; fi;done;

Page 77: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

se o usuário escolher alguma opção diferente de "Sair", o script apenas escreve a opção. Se for escolhida Sair, ele mostra a opção, entra no IF e executa o break, saindo do select.

É interessante combinar o Select com o Case. Vamos mostrar como ficaria aquele exemplo do case, de iniciar um serviço, utilizando o Select, para tornar o script interativo:

Page 78: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

select x in Iniciar Reiniciar Parar Sair; do case "$x" in 'Iniciar' ) echo " Iniciando o serviço..." ;; 'Reiniciar' ) echo " Reinicializando o serviço..." ;; 'Parar' ) echo " Parando o serviço..." ;; 'Sair' ) echo " Script encerrado." break ;; *) echo " Opção inválida!" ;; esacdone;

Page 79: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Primeiramente o Select mostra um menu:

1) Iniciar2) Reiniciar3) Parar4) Sair#?

Quando o usuário digitar um número de opção, o select executa o case e este compara a variável x com suas opções. Se achar alguma, executa seus comandos, no caso um echo. Se o usuário escolher Sair, além do echo, ele executa o "break", que interrompe o select:

Page 80: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

neo@matrix:~/test$ ./t1) Iniciar2) Reiniciar3) Parar4) Sair#? 1 Iniciando o serviço...1) Iniciar2) Reiniciar3) Parar4) Sair#? 5 Opção inválida!

1) Iniciar2) Reiniciar3) Parar4) Sair#? 4 Script encerrado.neo@matrix:~/test$

Page 81: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Estruturas de Repetição

whileuntilfor

Page 82: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

WHILE

Ele testa uma condição (como faz o IF) e executa um conjunto de comandos se esta condição for verdadeira. Após a execução desses comandos, ele torna a testar a condição e se esta for verdadeira, ele reexecuta os comandos e assim por diante.

Sua sintaxe é a seguinte:while [ condição ]; docomando 1;comando 2;...done;

Page 83: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

O parâmetro [ condição ] funciona exatamente igual ao do IF. Não voltarei a abortar os parâmetros condicionais pois eles já foram explicados na aula 3. Em caso de dúvida sobre isso, uma rápida revisão na aula 3 é suficiente.

Bom, vamos ao exemplo mais simples do While: um contador.

x = 0While [ "$x" -le 10 ];do echo "Execução número: $x"?; x = $((x+1));done;

Page 84: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Analisando:Na primeira linha temos a condição: enquanto o valor da variável x ( $x ) for menor-igual ( -le ) a 10, faça: mostre "Execução número: " e o valor de x ($x). Faça x = x + 1. Isso no bash é feito pelo comando $(( )). Ele realiza operações algébricas com variáveis. No caso acima, estamos somando x + 1 e colocando o resultado no próprio x.

Preste atenção, que as linhas do While precisam de um ";" para terminar, exceto a que contém o "do", pois ele representa o começo do bloco de comandos.

Quando executamos o script acima, temos uma contagem de 1 até 10:

Page 85: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

jefer@acer:~$ x=0; while [ "$x" -lt 10 ]; do x=$((x+1)); echo"Execução número: $x"; done;Execução número: 1Execução número: 2...Execução número: 9

jefer@acer:~$

Page 86: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

until

Tem as mesmas características do while, a única diferença é que ele faz o contrário. Veja o exemplo abaixo:

variavel="naovalor"until [ $variavel = "valor" ]; do comando1 comando2done

Page 87: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Ao invés de executar o bloco de comandos (comando1 e comando2) até que a expressão se torne falsa, o until testa a expressão e executa o bloco de comandos até que a expressão se torne verdadeira. No exemplo, o bloco de comandos será executado desde que a expressão $variavel = “valor” não seja verdadeira.

Se no bloco de comandos a variável for definida como “valor”, o until pára de executar os comandos quando chega ao done.

Page 88: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Um exemplo para o until que, sintaticamente invertido, serve para o while também:var=1count=0until [ $var = "0" ]; do comando1 comando2 if [ $count = 9 ]; then var=0 fi count=`expr $count + 1`done

Page 89: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Primeiro, atribuímos à variável “$var” o valor “1″. A variável “$count” será uma contagem para quantas vezes quisermos executar o bloco de comandos. O until executa os comandos 1 e 2, enquanto a variável “$var” for igual a “0″. Então usamos um if para atribuir o valor 0 para a variável “$var”, se a variável “$count” for igual a 9. Se a variável “$count” não for igual a 0, soma-se 1 a ela. Isso cria um laço que executa o comando 10 vezes, porque cada vez que o comando do bloco de comandos é executado, soma-se 1 à variável “$count”, e quando chega em 9, a variável “$var” é igualada a zero, quebrando assim o laço until

Page 90: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

for

O for é semelhante ao while usado como um contador.

for <var> in <lista>; docomandosdone;

O For associa o primeiro item da lista de nomes à variável <var> e executa os comandos. Em seguida, associa novamente o segundo item da lista à <var> e executa novamente os comandos... e assim por diante, até acabar a lista.

Page 91: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

jefer@acer::~$ for x in Compra Venda Aluguel; do echo $x; done;CompraVendaAluguel

Ou seja, primeiro ele coloca "Compra" na variável x e executa os comandos, no caso, "echo $x", e assim por diante.

Page 92: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Podemos facilmente implementar um contador, usando em conjunto com o for, o programinha "seq". Ele simplesmente gera uma seqüência de números. Por exemplo, "seq 10" gera uma seqüência de 1 até 10. Assim, podemos usá-lo no for:

for x in $(seq 10); do echo $x; done;

Esse comando é semelhante ao contador implementado com o While. Primeiro o x vale 1 e o for executa os comandos. Depois x vale 2 e ele reexecuta os comandos...

Page 93: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Vamos usar o For para renomear os arquivo de um diretório, mudando todos os arquivo terminados em ".mp3" para ".mp3.bak".

for x in *; do mv "$x" "${x}.bak"; done;for x in *.mp3; do if [ -e "$x" ]; then mv "$x" "${x}.bak"; fi; done;

Page 94: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

No local de <lista> nos colocamos "*.mp3". Isso diz ao bash para expandir (transformar) ele na lista de arquivos terminados com ".mp3". Senão houver nenhum arquivo com essa terminação, o bash não faz nada, ficando para o for a string "*.mp3". Por isso precisamos do IF para testar se o arquivo existe.

Experimente no seu sistema.echo *.mp3

Vai mostrar os arquivos no diretório atual com terminação mp3, mas sem quebra de linha entre eles, ou seja, um nome após o outro. Se não houver nenhum arquivo com terminação mp3, ele apenas vai mostrar "*.mp3"

Page 95: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Bom, voltando ao For, ele vai atribuir a "x" cada nome na lista de arquivos com terminação ".mp3" e executar os comandos seguintes.

Primeiro ele testa para ver se o arquivo existe ( if [ -e "$x" ]; ), e se existir, renomeia ele para o seu próprio nome acrescido de ".bak" ( ${x}.bak ).

Resumindo, o For faz isso: você fornece uma lista de nomes para ele e ele vai atribuindo esses nomes, em ordem e um por vez, à variável <var> e executa os comandos entre o "do" e o "done;".

Page 96: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

metacaracteresSão caracteres especiais. Quando eles são digitados são interpretados de outra forma. Podem ser usados para especificar um ou uma cadeia de outros caracteres. O shell procura no diretório corrente arquivos que casem com esse padrão e os expande.

Usando caracteres coringasGeralmente o caracter "*" é um coringa que significa "qualquer caracter em qualquer quantidade". Por isso se a gente executar "ls *", onde "*" entra no lugar do "nome do arquivo", significando qualquer string de qualquer tamanho. Por isso ele lista todos os arquivos.

Page 97: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Faixas de caracteres também são permitidos: [0-3] é o mesmo que [0123] [a-k] é o mesmo que [abcdefghijk] [A-C] é o mesmo que [ABC] [A-Ca-k] é o mesmo que [ABCabcdefghijk]

Existem também algumas formas alternativas: [[:alpha:]] é o mesmo que [a-zA-Z] [[:upper:]] é o mesmo que [A-Z] [[:lower:]] é o mesmo que [a-z] [[:digit:]] é o mesmo que [0-9] [[:alnum:]] é o mesmo que [0-9a-zA-Z] [[:space:]] casa com qualquer quantidade de espaços

Page 98: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

grep

O grep basicamente faz buscas. Mais precisamente: grep palavra file retorna todas as linhas do arquivo file que contenham palavra

Outro jeito de usar o grep é atraves de pipe (lembram dos pipes?).

Por exemplo: ls | grep palavra

Lista todos os arquivos que contenham palavra em seu nome. Ou seja, a entrada do grep é uma lista de arquivos (gerada pelo ls) que será filtrada, sendo impressas somente as linhas que contenham palavra.

Page 99: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

>cat file filebig bad bug bigger boogy

"." significa "qualquer e apenas um caracter". Para significar strings arbitrárias utilizamos "*".Intervalo numerico: ls oi[0-9].txt

Page 100: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

sed

Exemplo 1: >cat file O gato preto foi caçado por um cachorro marrom. >sed -e 's/preto/branco/g' file O gato branco foi caçado por um cachorro marrom.

Page 101: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

FunçõesFunções são blocos de comandos que podem ser definidos para uso posterior em qualquer parte do código. sintaxe de uma função:funcao() { comando1 comando2 ...}A função funcionará como um simples comando próprio. Você executa a função em qualquer lugar do script shell, e os comandos 1, 2 e outros serão executados. A flexibilidade das funções permite facilitar a vida do programador, e organizar

Page 102: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Shellzin GráficoXdialog --title "Exemplo número 2!" --stdout --yesno \"Neste exemplo, vamos ver o que você quer fazer. Você deseja continuar com o programa?" \0 0if [ $? = "0" ]; thenecho "Que bom! Você continuou o programa! Parabéns!"elif [ $? = "1" ]; thenecho "Você saiu do programa..."fi

Page 103: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Shell com janelasXdialog --title "Exemplo número 1!" --center --stdout --yesno \"Isto é legal?" \0 0

http://aurelio.net/shell/dialog/

Page 104: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

mais janelas

Xdialog --title "Exemplo número 2!" --center --stdout --yesno \"Neste exemplo, vamos ver o que você quer fazer. Você deseja continuar com o programa?" \0 0

if [ $? = "0" ]; then echo "Que bom! Você continuou o programa! Parabéns!"elif [ $? = "1" ]; then echo "Você saiu do programa..."fi

Page 105: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

kdialog

#!/bin/bashkdialog --msgbox "Olá, tudo bem?"

kdialog --inputbox "Canal a gravar (ex: 12)" 10 60 "12" 2> /tmp/resposta.tmpcanal=`/tmp/resposta.tmp`

kdialog --passivepopup "Esta janela some sozinha depois de 6 segundos." 6 &

arquivo=`kdialog --getsavefilename "/home/kurumin/Desktop" \"*.txt |Arquivos de texto"

Page 106: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

mais janelas

Xdialog --title "Aviso" --center --stdout --msgbox \"Este programa é apenas um exemplo para você ver como o Xdialog \\nfunciona. Apropósito, se você praticar bastante pode criar \\nprogra mas incríveis e facilmente, que daria muito mais \\ntrabalho fazendo em outras linguagens." \0 0

Page 107: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

mais janelas

dialog --title "Exemplo de Menu" --center --stdout --menubox \"Qual sua distribuição Linux favorita?" \20 50 0 \1 "Slackware" \2 "Debian" \3 "Red Hat" \4 "Conectiva Linux" \5 "Eu tenho minha própria distribuição"

Page 108: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Xdialog --title "Exemplo de Menu" --center --stdout --menubox \"Qual sua distribuição Linux favorita?" \20 50 0 \1 "Slackware" \2 "Debian" \3 "Red Hat" \4 "Conectiva Linux" \5 "Eu tenho minha própria distribuição"

Page 109: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

#!/bin/bashkdialog --msgbox "Olá, tudo bem?"kdialog --inputbox "Canal a gravar (ex: 12)" 10 60 "12" 2> /tmp/resposta.tmpcanal=`/tmp/resposta.tmp`kdialog --passivepopup "Esta janela some sozinha depois de 6 segundos." 6 &arquivo=`kdialog --getsavefilename "/home/kurumin/Desktop" \"*.txt |Arquivos de texto"`

Page 110: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

exemplo

#!/bin/sh#Desenvolvido por Jefer Benedett Dorr ([email protected]) #script para configurar rede do meu note na pos da unipankdialog --title "Script Configurador para Rede Unipan" --passivepopup "Aguarde....... Configurando a rede" 3 #msg passiva no canto superior esquerdoclearifconfig eth0 downifconfig eth0 upecho "iniciando configuração"ifconfig eth0 192.168.90.117 netmask 255.255.255.0 upecho "adicionando rota"route add default gw 192.168.90.1#adicionar dns no resolvecho "adicionando dns no resolv.conf"echo "nameserver 192.168.90.1" >> /etc/resolv.conf echo "testando conexao..........."if ping -c 3 www.unipan.br

then echo "Conexão --------- OK "echo "Conexão Testada ;)"else echo "Bahh!! Conexão Falhou!"

fi

Page 111: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Sobre Shell

Papo de Botequim – Julio Neves - http://twiki.softwarelivre.org/TWikiBar

Shell Script: Porque programar tem que ser divertido – Aurélio Marinho Jargas - http://aurelio.net/shell/

Guia do Hardware – Carlos Morimotto - http://www.gdhpress.com.br/ferramentas/leia/index.php?p=cap4-1

http://lcnsqr.byethost9.com/?sec=lpic&exam=102&node=13

Page 112: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas
Page 113: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Livros

Page 114: Computadores e Sociedade Software Livre GNU/Linux parte2€¦ · Montagem e desmontagem de dispositivos mount [opções] [dispositivo] [ponto_de_montagem] -a : monta todos os sistemas

Filmes

Piratas do

Vale do SilícioRevolution OS

The code

Linux