Você está na página 1de 57

Linux Bsico a

Grupo de Desenvolvimento da Apostila de Linux Projeto Apostila de Linux FURG-BR Verso 3.00 a

Prefcio a
O Linux um sistema operacional que vem se destacando mundialmente por sua estabilie dade e capacidade de acompanhar os avanos da tecnologia. Muito desses atributos devem-se c ao fato de o Linux ter seu cdigo aberto, permitindo ao usurio modic-lo conforme suas o a a necessidades. O sucesso do Linux devido, em grande parte, ` imensa variedade de ferramentas para e a os usurios. Muitas dessas ferramentas tiveram suas origens em sistemas Unix e chegaram ao a Linux atravs do esforo da Free Software Foudation com o Projeto GNU (GNUs Not Unix ). e c Maiores informaes sobre o projeto GNU podem ser obtidas no site http://www.gnu.org co Na Fundao Universidade Federal do Rio Grande (FURG) o uso do Linux vem crescendo ca a cada dia. Seu uso na instituio comeou em servidores no Centro de Processamento de ca c Dados (CPD) e em alguns departamentos. Hoje tem-se dispon veis, alm dos servidores, e estaes de trabalho rodando Linux em vrios laboratrios da universidade. Frente ` demanda co a o a de conhecimentos de uso do sistema operacional foi oferecido um curso bsico de Linux na a primeira Semana Acadmica do curso de Engenharia de Computao da FURG. A partir de e ca ento o material didtico vem evoluindo at tornar-se esta apostila. a a e Hoje o desenvolvimento da apostila segue uma losoa aberta, ou seja, qualquer pessoa pode colaborar com melhorias para o material. A verso corrente dessa apostila pode ser obtida no site do projeto (http://www.ecomp. a furg.br/aplinux).

iii

Linux Bsico a

iv

Verso 4.00 a

Histrico o
Em 1997 foi realizada na Fundao Universidade Federal do Rio Grande a primeira Seca mana Acadmica do curso de Engenharia de Computao. A Semana Acadmica tinha na e ca e programao vrios cursos, dentre eles um curso bsico de Linux. O curso, ministrado por ca a a Rafael Rodrigues Obelheiro, teve como material didtico aquela que seria a primeira verso a a dessa apostila. Em 1998, devido ao sucesso do curso de Linux, este foi novamente promovido na segunda Semana Acadmica de Engenharia de Computao. Dessa vez, entretanto, a apostila foi refore ca mulada a partir da primeira verso, adquirindo um carter mais descritivo. Essa reformulao a a ca foi feita por Rodrigo Araujo Real. Em 1999 a apostila recebeu mais algumas reformulaes para ser apresentada como material co didtico para um curso de Linux que fazia parte da Sesso Coruja, um projeto que tinha como a a objetivo oferecer cursos ` comunidade acadmica. Essa nova verso da apostila contava com a e a um cap tulo sobre shell scripts e o uso do Linux em redes. Alm disso, foi feita a formatao e ca A da apostila usando o L TEX 2 . Essa verso da apostila contou com a colaborao de Mario a ca Domenech Goulart. Em 2000 inicia-se o Projeto Apostila de Linux FURG-BR. Esse projeto prev o desenvole vimento da apostila de forma aberta, ou seja, qualquer pessoa pode se juntar ao grupo de desenvolvimento para ajudar no aperfeioamento da apostila. c

Linux Bsico a

vi

Verso 4.00 a

Grupo de Desenvolvimento
A Apostila de Linux - FURG conta com a colaborao de vrias pessoas. Algumas delas ca a so listadas abaixo (em ordem alfabtica): a e Mario Domenech Goulart - ec4mango@super.furg.br Rafael Rodrigues Obelheiro - obelix@lcmi.ufsc.br Rodrigo Araujo Real - ec4real@super.furg.br Maiores informaes para submeter correes, sugestes ou mesmo tomar parte do grupo co co o de desenvolvimento podem ser obtidas no site do projeto, localizado em http://www.ecomp. furg.br/aplinux.

vii

Linux Bsico a

viii

Verso 4.00 a

Sumrio a
Prefcio a Histrico o Grupo de Desenvolvimento 1 Introduo ca 2 Primeiros Passos 2.1 Entrando e Saindo do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Consoles Virtuais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Exerc cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Os 3.1 3.2 3.3 3.4 Shells e os Comandos Shells do Linux . . . . . Comandos Bsicos . . . a caracteres coringa . . . . Exerc cios . . . . . . . . iii v vii 1 3 3 3 4 5 5 6 8 9 11 11 12 13 14 15 17 17 18 18 19 20

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

4 Utilizando Filtros e Redirecionamentos 4.1 Entrada e Sa Padro . . . . . . . . . da a 4.2 Redirecionamento de Entrada e Sa da . 4.3 Canalizaes (Pipes) . . . . . . . . . . . co 4.4 Exerc cios . . . . . . . . . . . . . . . . . 5 Editores de Texto

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

6 Trabalhando em Rede 6.1 Correio Eletrnico . . . . . . . . . . . . . . . . . . o 6.2 Executando programas em um computador remoto 6.3 Transferindo Arquivos . . . . . . . . . . . . . . . . 6.4 Acessando Documentos HTML . . . . . . . . . . . 6.5 Outros Servios Dispon c veis . . . . . . . . . . . . . ix

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Linux Bsico a 7 O Sistema de Arquivos 7.1 A rvore de diretrios . . . . . . . . . a o 7.2 Permisses de Arquivos . . . . . . . . o 7.3 Alterao dos Atributos de Permisso ca a 7.4 Links . . . . . . . . . . . . . . . . . . 7.4.1 Hard Links . . . . . . . . . . . 7.4.2 Links Simblicos . . . . . . . . o 7.5 Exerc cios . . . . . . . . . . . . . . . . 21 21 22 23 24 24 24 25 27 27 27 28 29 30 30 31 33 34 35 37 37 38 38 40 41 45 45

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

8 Controle de Jobs e Processos 8.1 Jobs e Processos . . . . . . . . . . . . . . . . . . 8.2 Background e Foreground . . . . . . . . . . . . . 8.3 Colocando em Background e Matando Jobs . . . 8.4 Parando e Reiniciando Jobs . . . . . . . . . . . . 8.5 Mantendo os jobs ativos aps o trmino do shell o e 8.6 Escalonamento de Jobs . . . . . . . . . . . . . . 8.7 Exerc cios . . . . . . . . . . . . . . . . . . . . . .

9 Arquivando e Compactando arquivos 9.1 Exerc cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Dicas e Truques 11 Criando Shell Scripts 11.1 Primeiros Passos . . 11.2 A Sintaxe do Shell . 11.2.1 Variveis . . a 11.2.2 Condies . . co 11.2.3 Estruturas de 11.2.4 Comandos . . 11.3 Exerc cios . . . . . .

. . . . . . . . . . . . . . . . . . . . Controle . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

Verso 4.00 a

Cap tulo 1

Introduo ca
O Linux sistema operacional baseado no sistema Unix, estando dispon para diversas e vel plataformas de hardware. A distribuio do Linux feita segundo a GPL (General Public License), do projeto GNU ca e (GNU is not Unix ), mantido pela Free Software Foundation (FSF). A licena permite a livre c distribuio do software e garante que o seu cdigo fonte seja aberto, ou seja, qualquer pessoa ca o pode observar como o Linux foi constru do. Algumas organizaes utilizam-se do kernel para criar sistemas completos, chamados de co distribuioes. As distribuies Linux so compostas do kernel e vrios outros aplicativos como c co a a shells, editores de texto, compiladores, editores grcos, processadores de textos, jogos, clientes a e servidores para vrios protocolos de rede, planilhas de clculo e uma grande variedade de a a classes de aplicativos. Alguns exemplos de distribuies so: Conectiva, Red Hat, Debian, Slackware, Mandrake, co a Turbo Linux, Yellow Dog etc. O Linux suporta vrios usurios utilizando o sistema ao mesmo tempo, ou seja, mula a e multitarefa, pois permite que vrios programas sejam executados compartilhando tiusurio. E a a recursos da mquina, fornecendo um sistema de proteo a esses recursos. a ca

Linux Bsico a

Verso 4.00 a

Cap tulo 2

Primeiros Passos
2.1 Entrando e Saindo do Sistema

No Linux todos usurios precisam de uma identicao e uma senha, no poss entrar a ca a e vel no sistema sem elas. O sistema mostra a palavra login:, aguardando um usurio digitar seu a username. Quando algum username for digitado o sistema mostrar a palavra password:. a Nesse local o usurio deve digitar sua senha. Feito isso, o sistema ir vericar se o usurio a a a est cadastrado no sistema e se a sua senha vlida. Caso positivo o usurio poder utilizar a e a a a o sistema. Cada usurio possui um diretrio conhecido como home, onde ele pode trabalhar livrea o mente, criando, apagando e lendo arquivos e subdiretrios. Quando um usurio criado, o o a e sistema gera esse diretrio e grava nele alguns arquivos de inicializao. Esses arquivos contm o ca e informaes que podem ser modicadas pelo prprio usurio. co o a E muito importante que usurios de sistemas Linux conectados ` Internet no utilizem a a a senhas muito simples, como combinaoes do seu nome ou do seu username, pois estas senhas c so facilmente descobertas por pessoas mal intencionadas, que de posse delas podem invadir o a sistema e fazer um grande estrago. Alm de escolher uma boa senha, o usurio deve troc-la e a a de tempos em tempos e procurar utilizar senhas diferentes em mquinas diferentes. a Para trocar a senha o usurio deve digitar o comando passwd. O sistema pedir a nova a a senha que, logo aps, dever ser redigitada. Alguns sistemas fazem uma vericao da nova o a ca senha e informam ou no permitem que o usurio utilize senhas muito bvias. a a o Por razes de segurana nunca deve-se deixar uma sesso aberta em uma mquina Linux, o c a a Para sair do sistema utiliza-se o comando logout. Cada mquina Linux possui um nome, chamado hostname 1 . Esse nome serve por exemplo, a para identic-la quando operando em uma rede. a

2.2

Consoles Virtuais

O console de uma mquina composto basicamente pelo seu monitor e teclado conectados a e diretamente ao sistema. Como o Linux permite que vrios usurios utilizem o computador a a
1

hostname tambm o comando para mostrar o nome da mquina em que o usurio est logado e e a a a

Linux Bsico a ao mesmo tempo ou que um mesmo usurio abra vrias sesses de trabalho, pode-se utilizar a a o o recurso dos consoles virtuais para alternar entre essas sesses. A mudana de um console o c virtual para outro feita atravs da tecla Alt em conjunto com uma das teclas de funo. e e ca Cada tecla de funo identica um console virtual, sendo comum o uso das F1 ` F6. ca a

2.3

Exerc cios

2.1 Entre no sistema usando o seu username e sua senha. 2.2 Utilize o comando passwd para trocar sua senha. 2.3 Saia do sistema utilizando o comando truetlogout. 2.4 Troque de console virtual utilizando Alt+F2, por exemplo, e efetue o seu login.

Verso 4.00 a

Cap tulo 3

Os Shells e os Comandos
3.1 Shells do Linux

O shell um programa que passa os comandos do usurio para o ncleo do sistema opee a u racional (kernel). E comum ser chamado de interpretador de comandos, pois ele traduz os comandos do usurio em instrues ao sistema operacional. E atravs dele que pode-se copiar a co e um arquivo ou iniciar algum programa. O Linux permite o uso de vrios shell, de acordo com a as preferncias de cada usurio, sendo os comandos bsicos iguais para todos. A gura 3.1 e a a mostra um diagrama de como podemos visualizar os shells do Linux.

csh

bash

Kernel

sh

tcsh

Figura 3.1: contexto do shell no Linux O bash (Bourne Again Shell) um dos shells que possui mais recursos e tambm um dos e e mais usados por usurios do Linux. Por esse motivo os exemplos mostrados nesse documento a assumem o uso do Bash, embora muitas informaes sejam vlidas para outros shells. co a Como caracter sticas importantes podemos citar: a sensibilidade ao caso, ou seja, maisculas u e minsculas so diferenciadas, o uso da barra (/) para referenciar diretrios e a existncia da u a o e 5

Linux Bsico a variveis de ambiente (por exemplo, a varivel de ambiente PATH que indica os diretrios onde a a o o sistema deve procurar por programas a serem executados). E importante salientar que o Linux no procura no diretrio corrente1 arquivos a serem executados. Caso o caminho desses a o arquivos no estejam na varivel de ambiente PATH e no for informada a sua localizao, o a a a ca sistema no ir encontr-lo. a a a O formato bsico dos comandos2 : comando [-op~es] argumentos. a e co Mltiplos comandos podem ser utilizados separados por ;, nesse caso sero executados u a seqencialmente. u

3.2

Comandos Bsicos a

Abaixo sero citados alguns comandos bsicos e alguns de seus parmetros. Uma descrio a a a ca completa dos comandos pode ser obtida utilizando-se a documentao do prprio sistema, ca o digitando man comando. ls: Mostra informaes sobre os arquivos e diretrios. Pode ser utilizado com caracteres co o coringa e nomes de arquivos. Sintaxe: ls <arq1> <arq2> ... Parmetros mais usados: a a : mostra arquivos ocultos (arquivos cujo nome comea com ponto). c l : mostra permisses dos arquivos, identica diretrios, arquivos e links, mostra o o data e hora de gravao e o tamanho dos arquivos. ca R : ls recursivo, entra nos diretrios mostrando os arquivos. o F : mostra o tipo dos arquivos. Exemplo: ls -l /etc cd: troca o diretrio corrente (. representa o diretrio corrente e .. representa o o o diretrio pai). Quando utilizado sem nenhum argumento, vai para o diretrio home do o o usurio. a Sintaxe: cd <diretrio> o Exemplo: cd /bin cp: copia um ou mais arquivos para outro arquivo ou diretrio, sendo que quando so o a copiados mais de um arquivo o destino s pode ser um diretrio. o o Sintaxe: cp <arq1> <arq2> ... Exemplo: cp /etc/hosts ./ mv: move arquivos para outros arquivos ou diretrios. Pode ser usado para renomear o arquivos. Mltiplos arquivos s podem ser movidos para diretrios. u o o
1 2

<arqN>

<arqN> <destino>

o diretrio corrente representado pelo diretrio .. Verique a existncia deste com o comando ls -la. o e o e o termo comando ser utilizado nesse documento para indicar programas a serem interpretados pelo shell a

Verso 4.00 a

Linux Bsico a Sintaxe: mv <arq1> <arq2> ... Exemplo: mv hosts maqs rm: apaga arquivos. E importante observar que quando um arquivo apagado ele no e a pode ser recuperado. Sintaxe: rm <arq1> <arq2> ... Parmetros mais usados: a i : pede ao usurio uma conrmao para cada arquivo a ser apagado. a ca Exemplo: rm -i maqs mkdir: cria novos diretrios. o Sintaxe: mkdir <dir1> <dir2>...<dirN> Exemplo: mkdir novo rmdir: apaga diretrios vazios. o Sintaxe: rmdir <dir1> <dir2>...<dirN> Exemplo: rmdir novo cat: sua funo de concatenar arquivos, mas bastante utilizado para visualizao do ca e e ca contedo destes. u Sintaxe: cat <arq1> <arq2> ... Exemplo: cat /etc/passwd more: mostra o contedo dos arquivos de forma paginada. u Sintaxe: more <arq1> <arq2> ... Exemplo: more /etc/passwd less: mesma funo do more, mas com algumas diferenas na implementao. ca c ca Sintaxe: less <arq1> <arq2> ... Exemplo: less /etc/passwd grep: pesquisa um string em um ou mais arquivos. Sintaxe: grep <string> <arq1> <arq2> ... Exemplo: grep furg /etc/hosts 7 Verso 4.00 a <arqN> <arqN> <arqN> <arqN> <arqN> <arqN> <destino>

Linux Bsico a

3.3

caracteres coringa

Assim como o DOS o Linux possui os s mbolos * e ? como caracteres coringa. O asterisco representa uma cadeia de caracteres quaisquer e de qualquer tamanho. O s mbolo de interrogao representa um caracter qualquer (apenas um). ca
$ ls texto

texto2

bar

mar

$ ls *2 texto2

$ ls *x* texto texto2

$ ls ?a? bar mar

Alm desses caracteres coringa, o shell do Linux conta com alguns recursos extras. Observe e os exemplos:
$ ls -l *.{c,pas}

Exemplo 3.3.1: ls -l *.{c,pas}


$ ls [mb]ar

Exemplo 3.3.2: ls [mb]ar O exemplo 3.3.1 mostra todos arquivos com extenso c e pas e o exemplo 3.3.2 mostra os a arquivos mar e bar. Os caracteres coringa no so reconhecidos pelos comandos como ls, na verdade eles so a a a interpretados pelo shell e substitu dos pelos nomes dos arquivos correspondentes. Isso pode ser melhor visualizado com o exemplo 3.3.3
$ ls *

Exemplo 3.3.3: ls * 8 Verso 4.00 a

Linux Bsico a Conforme o exemplo 3.3.3, o shell passaria o comando para o sistema o operacional da seguinte forma:
ls texto texto2 bar mar

3.4

Exerc cios

3.1 Monte a seguinte estrutura de diretrios a partir do seu diretrio home. o o ~/-------etc |----bin \----usr 3.2 Liste os arquivos do diretrio /bin e depois copie-os para ~/bin. o 3.3 Utilize o man para descobrir o que faz o seguinte comando: cp -R /etc ~/etc 3.4 Execute o comando do exerc anterior. cio 3.5 Mostre o contedo dos arquivos /etc/inittab e /etc/passwd utilizando o cat, o more u e o less. Identique vantagens e desvantagens de um em relao aos outros. ca 3.6 Localize o seu username no arquivo /etc/passwd usando o comando / dentro do less. 3.7 Utilize o comando grep para localizar o seu username arquivo /etc/passwd. 3.8 Verique a existncia de arquivos que comecem com o caracter . no seu diretrio home. e o Caso existam, mostre seus contedos. u 3.9 Descubra utilizando o manual on-line uma forma de apagar diretrios com o comando o rm. 3.10 Mostre todos os arquivos existentes a partir do seu diretrio home. o

Verso 4.00 a

Linux Bsico a

10

Verso 4.00 a

Cap tulo 4

Utilizando Filtros e Redirecionamentos


4.1 Entrada e Sa Padro da a

Muitos comandos do Linux recebem dados da entrada padro, ou standard input (stdin) a e os entregam ` sa padro, ou standard output (stdout). O stdin padro o teclado, e o a da a a e stdout padro o monitor. As mensagens de erro so enviadas pelos programas para o erro a e a padro, ou standard error (stderr ). Observe os exemplos: a
$ cat /etc/hosts tainha.dmat.durg.br barracuda.dmat.furg.br

Nesse exemplo, o comando cat tem como entrada o arquivo hosts e envia a sa para o da monitor (stdout). Se no for especicado nenhum arquivo como entrada, o cat receber dados do teclado a a (stdin) e os enviar para a tela (stdout). a

$ cat laranja banana lim~o a Ctrl+D

Outro exemplo interessante o comando sort, que l linhas de texto do stdin e as envia e e ordenadas para stdout.

11

Linux Bsico a
$ sort laranja banana lim~o a Ctrl+d banana laranja lim~o a

4.2

Redirecionamento de Entrada e Sa da

O s mbolo > pode ser usado para redirecionar a sa para um arquivo novo. Observe da os exemplos:

$ sort >frutas laranja banana limao Ctrl+D $ cat frutas banana laranja limao

$ cat >frutas laranja| banana limao Ctrl+D $ sort frutas > frutasord $ cat frutasord banana laranja limao

O s mbolo >> pode ser utilizado para redirecionar a sa para um arquivo sem apag-lo, da a apenas adicionando ao seu nal a sa do comando. da 12 Verso 4.00 a

Linux Bsico a
$ cat >vegetais alface cenoura beterraba Ctrl+D $ cat >>vegetais couve-flor brocolis espinafre Ctrl+D $ cat vegetais alface cenoura beterraba couve-flor brocolis espinafre

$ sort vegetais >> frutas $ cat frutas banana laranja limao alface beterraba brocolis cenoura couve-flor espinafre

Para a vericao de mensagens de erro, podem ser usados os s ca mbolos 2> ou 2>>, que funcionam, com relao ` forma de gravao dos arquivos, da mesma maneira que os s ca a ca mbolos exemplicados acima.
$ blablabla 2> erro $ cat erro

4.3

Canalizaes (Pipes) co

No Linux um comandos pode ter sua sa padro conectada a entrada padro de outro. da a a A canalizao feita utilizando-se o s ca e mbolo | entre os comandos, esses comandos sero a executados concorrentemente. 13 Verso 4.00 a

Linux Bsico a A canalizao muito utilizada quando se deseja ltrar informaes, para isso so muito ca e co a usados os ltros more, less, tail e head.
$ $ $ $ ls -l /etc | more ls -l /etc | head -n 15 cat /etc/passwd | tail -n 10 cat /etc/passwd | tail -n 20 | head -n 10

Tanto os pipes quanto os redirecionamentos so facilidades do shell, no sendo tratados a a pelos comandos.

4.4

Exerc cios

4.1 Gere um arquivo de nome compras e armazene nele alguns itens que voc gostaria de e comprar. 4.2 Acrescente ao arquivo compras o contedo do arquivo frutas do exemplo anterior. u 4.3 Descubra a utilidade do comando mount, execute o comando a seguir e explique o que acontece. mount -t vfat /dev/fd0 /mnt/floppy 2>msg 4.4 Verique o funcionamento do seguinte comando: /etc/cat inetd.conf >/dev/null o 4.5 Mostre as 5 primeiras linhas do arquivo .bash history do seu diretrio home. 4.6 Mostre de forma paginada as 60 ultimas linhas do arquivo profile do diretrio /etc. o 4.7 Como voc faria para mostrar um determinado nmero de linhas de um arquivo sem e u mostrar o in e o m do mesmo. cio 4.8 O que faz a linha de comando : yes | rm /* ? 4.9 Redirecione a sa do comando ps aux para o comando grep e localize os seus processos da e depois os processos do root.

14

Verso 4.00 a

Cap tulo 5

Editores de Texto
Existe uma grande variedades de editores de texto para Linux, tanto para o ambiente grco quanto para a interface texto. Sero abordados aqui o pico e o joe, dois editores de a a texto muito populares em mquinas Linux e Unix. O pico um editor que acompanha o pine a e (programa bastente usado para correio eletrnico) e o joe um editor feito nos moldes do o e WordStar, funcionando praticamente com os mesmos comandos.

Funo ca Movimentao do cursor ca In / m de linha cio Pgina seguinte a Pgina anterior a Apaga caracter ` esquerda a Apaga caracter ` direita a Apaga linha Liga/desliga insero ca Procura cadeia Marca in de bloco cio Marca m de bloco Apaga bloco Move bloco Copia bloco Insere arquivo Grava o arquivo Grava o arquivo e sai Sai sem gravar Ajuda

pico , , , CTRL+A/CTRL+E CTRL+V CTRL+Y BACKSPACE CTRL+D CTRL+K CTRL+W CTRL+^ , , , CTRL+K CTRL+U CTRL+U CTRL+R CTRL+O CTRL+X CTRL+X CTRL+G

joe , , , CTRL+A/CTRL+E PGDN PGUP BACKSPACE CTRL+D CTRL+Y CTRL+T T CTRL+K F CTRL+K B CTRL+Y K CTRL+K Y CTRL+K M CTRL+K C CTRL+K R CTRL+K D CTRL+K X CTRL+C CTRL+K H

15

Linux Bsico a

16

Verso 4.00 a

Cap tulo 6

Trabalhando em Rede
Nesse cap tulo sero estudados programas que permitem a utilizao do Linux em redes a ca de computadores.

6.1

Correio Eletrnico o

O Linux dispe de vrios programas para leitura e envio de e-mails, nesse documento sero o a a mostrados dois programas bastante difundidos: o mail e o pine. Dentre esses programas o mail o que possui a interface mais simplicada. Para enviar e uma mensagem basta digitar na prpria linha de comando: o mail <endereo eletr^nico> c o O programa ento pedir que o usurio digite o assunto (Subject), a seguir deve-se digitar a a a o texto que ser enviado no corpo da mensagem. Para encerrar a digitao do corpo da a ca mensagem deve-se pressionar a tecla ENTER seguido de um ponto (.) e de outro ENTER. O prximo campo a ser preenchido o Cc, ou seja, para quem o usurio deseja enviar cpias da o e a o mensagem, caso no deseje enviar a mais ningum basta digitar ENTER. Aps isso a mensagem a e o ser enviada. a
$ mail fulano Subject:Teste Bla Bla Bla . Cc:

Para ler as mensagens utilizando o mail basta digitar: mail. A partir da devem ser utilizados os comandos do prprio mail, para obter uma lista dos comandos dispon o veis digite: ? <ENTER>. Os comandos mais importantes so t, serve para mostrar os e-mails atuais, d a apaga mensagem, q encerra o programa sem alterar a caixa de correio, x sai do programa salvando as alteraes. co 17

Linux Bsico a O pine sem dvida um programa mais simples de usar, ele possui um menu autou e explicativo e utiliza os mesmos comandos do editor de textos pico. Para executar o pine basta digitar pine na linha de comando.

6.2

Executando programas em um computador remoto

O Linux possibilita que sejam executados programas em computadores remotos em uma rede. Para isso utiliza-se o comando telnet, este comando possibilita a conexo com uma a mquina em uma rede, por exemplo a Internet. Esse comando procura simular o console do a computador que est sendo acessado. a
$telnet micro01 Trying 200.132.227.194... Connected to micro01. Escape character is ^]. Red Hat Linux release 5.2 (Apollo) Kernel 2.0.36 on an i586 login: aluno password: Last login: Wed Aug 25 08:41:13 on tty1

6.3

Transferindo Arquivos

Para transferncias de arquivos entre mquinas de uma rede pode-se utilizar o programa e a ftp, que acessa computadores atravs do protocolo de transferncia de arquivos (FTP - File e e Transfer Protocol). Para efetuar o logging em uma mquina via ftp deve-se digitar: ftp [args] [endereo]. a c Onde args so os argumentos que podem ser passados ao programa e o endereo a idena c e ticao do computador a ser acessado. Um dos argumentos mais usados em transaes via ca co ftp aquele que permite a transferncia de vrios arquivos (-i), sem que seja necessria a e e a a conrmao antes de cada transferncia. ca e
$ ftp -i micro01 Connected to micro01. login: aluno password: ftp>

Durante a conexo com o computador, o usurio pode, em geral, se identicar com sua a a identicao, caso a tenha, ou identicar-se como annimo (anonymous), neste caso no ca o a e necessria uma senha vlida, deve-se apenas preencher o campo password com o e-mail do a a usurio. a 18 Verso 4.00 a

Linux Bsico a
$ ftp -i micro01 Connected to micro01. login: anonymous password: ftp>

Aps efetuar o logging o usurio se depara com o prompt do ftp, nesse ponto poss o a e vel digitar comandos para o ftp, a seguir esto citados alguns desses comandos. a bye: encerra a conexo, similar ao comando quit. a e ls: mostra informaes sobre arquivos. Muitos sites ftp aceitam, no ls, alguns arguco mentos dispon veis no prompt do Linux. O comando dir, em geral, funciona de forma similar ao ls -l. bin: seleciona o modo de transferncia para binrio. Deve ser usado no caso de transe a ferncias de arquivos binrios (programas, imagens, arquivos compactados, etc). e a ascii: seleciona o modo de transferncia para ASCII. Deve ser usado em transferncias e e de arquivos texto. get: transfere um arquivo do computador remoto para o computador local. Esse comando no aceita caracteres coringa. a mget: permite a transferncia de vrios arquivos do computador remoto para o come a putador local. Os arquivos a serem transferidos podem ser explicitados individualmente ou pode-se utilizar os caracteres coringa. put: funciona de forma semelhante ao comando get, com a diferena que a transferncia c e se d do computador local para o computador remoto. a mput: funciona de forma semelhante ao comando mget, sendo que a transferncia se e d do computador local para o computador remoto. a lcd: permite que o usurio troque de diretrio no computador local. a o

6.4

Acessando Documentos HTML

O Linux conta com uma ferramenta para acessar pginas Web em modo texto, o lynx. Essa a ferramenta, embora muitas vezes esquecida, pode ser util em algumas situaes espec co cas. Para execut-la basta digitar o comando: lynx <endereo> a c
$ lynx micro01

A navegao nos hyperlinks pode ser feita utilizando-se as setas do do teclado. Seta para ca direita segue o link, seta para esquerda volta ` pgina anterior, as setas para cima e para baixo a a 19 Verso 4.00 a

Linux Bsico a navegam entre os links e a barra de espao salta uma tela. Para efetuar o download de um c arquivo usa-se o comando d. Uma descrio completa dos comandos do lynx pode ser obtida ca atravs do Help, acessado com o comando h. e

6.5

Outros Servios Dispon c veis

O Linux dispe de uma grande variedade de programas para acesso ` rede, nessa seo o a ca sero abordados alguns desses programas. a talk: permite que dois usurios conversem atravs de uma rede. a e
$ talk fulano@micro10

ping: programa que pode ser utilizado para a vericao do tempo de resposta de um ca computador remoto.
$ ping micro03

nger: permite a vericao de informaes dos usurios de um determinado compuca co a tador.


$ finger $ finger @micro03 $ finger goulart@micro01 # mostra os usurios logados no computador local a # mostra os usurios logados em um a computador identificado como micro03 # mostra informa~es detalhadas sobre o usurio goulart co a do computador identificado como micro01

20

Verso 4.00 a

Cap tulo 7

O Sistema de Arquivos
7.1 A rvore de diretrios a o

A rvore de diretrios 1 do Linux comea no diretrio conhecido como root (/), a partir a o c o desse diretrio poss acessar outros diretrios e dispositivos. o e vel o Diferentemente do DOS, no Linux no existem letras que identicam drives, discos r a gidos e o CD-ROM por exemplo. Todos os dispositivos so montados em uma mesma rvore. a a Exemplo de rvore de diretrios: a o
/------------|----|----|----|----|----\----bin sbin dev etc home lib usr |---|---|---|---\----

doc src local man bin

Os diretrios exemplicados acima existem em praticamente todos os sistemas Linux. o Os diretrios /bin, /sbin e /usr/bin contm programas; /etc contm arquivos de cono e e gurao do sistema e de aplicativos; /dev contm arquivos que, na verdade, so pontos de ca e a acesso a dispositivos como unidades de disco, modems, interfaces de audio etc; /lib contm e arquivos de bibliotecas utilizados pelo sistema e por aplicativos; /home contm os diretrios e o dos usurios; /usr/doc contm documentao de programas. a e ca
1

A rvore de diretrios pode ser mostrada com o comando tree. a o

21

Linux Bsico a

7.2

Permisses de Arquivos o

Sendo comum em mquinas Linux a existncia vrios usurios, natural que exista um a e a a e sistema de proteo para os arquivos e diretrios. Cada arquivo e/ou diretrio possui um ca o o dono, geralmente o dono do arquivo ou diretrio o usurio que o criou. o e a Existem trs tipos de permisso, de leitura (r), de escrita (w) e de execuo (x). Essas e a ca permisses so denidas em trs n o a e veis de usurios, o dono, os membros do grupo ao qual o a arquivo pertence e outros usurios quaisquer. a A interpretao dos atributos de permisso um pouco diferente para arquivos e diretrios. ca a e o Nos arquivos so bastante intuitiva, permisso de escrita deixa o usurio modicar, ou escrever a a a no arquivo. Permisso de leitura deixa o usurio ver o contedo do arquivo e permisso de a a u a execuo deixa o usurio executar o arquivo quando poss ca a vel. Para os diretrios a permisso o a de escrita deixa o usurio criar ou apagar arquivos, a de leitura permite que o mesmo liste os a arquivos do diretrio e a de execuo permite que o usurio torne-o o diretrio corrente (cd). o ca a o Os atributos dos arquivos e diretrios podem ser vericados atravs do comando ls acomo e panhado do parmetro l. Observe o exemplo: a
$ ls -l drwxr-x---rw-rw-r--rwxr-x--2 real 1 real 1 real users users users 1024 Dec 29 12:53 scripts 36895 Dec 29 14:15 wine-faq 9619 Dec 27 15:30 prog

Esses arquivos so pertencentes ao usurio real e ao grupo users. a a O primeiro atributo indica o tipo de arquivo, os mais comuns so: a d l c b Arquivos Regulares Diretrios o Links Character Devices Block Devices

Aps o tipo de arquivo, o primeiro grupo de atributos indica as permisses do dono do o o arquivo. Por exemplo, o usurio real pode ler, escrever e executar o arquivo prog, apenas ler a e escrever o wine-faq. O segundo grupo de atributos determina as permisses do grupo de usurios ao qual o o a arquivo pertence. Os usurios do grupo users podem entrar, acessar (x) e listar (r) os arquivos a do diretrio scripts, eles podem tambm ler e escrever no arquivo wine-faq e ler e executar o e o arquivo prog. Os demais usurios podem apenas ler o arquivo wine-faq, no possuem nenhum tipo a a permisso sobre os outros arquivos. a Resumo da interpretao de permisses dos arquivos: ca o r w x Leitura Escrita Execuo ca 22 Verso 4.00 a

Linux Bsico a

Resumo da interpretao de permisses dos diretrios: ca o o r w x Listar os arquivos Criar ou apagar arquivos Entrar no diretrio (cd) o

7.3

Alterao dos Atributos de Permisso ca a

Os atributos de permisso dos arquivos e diretrios podem ser mudados pelo seu dono a o atravs do comando chmod. e Sintaxe: chmod <quem> <oper> <perm> <arq> Quem u Dono g Grupo o Outros a Todos Operao ca = Dene + Adiciona - Remove Permisso a Leitura Escrita Execuo ca Copia do Dono Copia do Grupo Copia dos Outros

r w x u g o

Observe nos exemplos como cam os atributos do arquivo aps a execuo do chmod. o ca
$chmod g-x prog -rwxr----1 real $chmod g+x prog -rwxr-x--1 real $chmod o=rx prog -rwxr-xr-x 1 real $chmod o-g prog -rwxr-x--1 real $chmod a=r prog -r--r--r-1 real $chmod u+wx,o-r prog -rwxr----1 real users users users users users users 9619 Dec 27 15:30 prog 9619 Dec 27 15:30 prog 9619 Dec 27 15:30 prog 9619 Dec 27 15:30 prog 9619 Dec 27 15:30 prog 9619 Dec 27 15:30 prog

As permisses podem ser denidas numericamente. Cada grupo rwx pode ser denido pela o soma dos nmeros. u

Permisso a r w x 23

Valor 4 2 1

Verso 4.00 a

Linux Bsico a

$ chmod 761 prog -rwxrw-r-1 real $ chmod 554 prog -r-xr-xr-1 real

users users

9619 Dec 27 15:30 prog 9619 Dec 27 15:30 prog

7.4

Links

Os links permitem que seja dado a um arquivo mais de um nome. Na verdade os arquivos so identicados por um nmero (inode number ). Cada nome de arquivo um link para um a u e determinado inode. Existem dois tipos de links, os links simblicos e os hard links. o

7.4.1

Hard Links

Quando so criados hard links os nomes dos links apontam todos para um mesmo inode, a qualquer alterao feita em um arquivo aparecer em todos os outros, pois eles so na verdade ca a a o mesmo arquivo. Caso existam vrios nomes de arquivos apontando para um inode e um arquivo for apagado, a apenas o seu nome desaparecer, os outros nomes no sero apagado e continuaro apontado a a a a para o mesmo inode, que por sua vez tambm no desaparecer. e a a Os hard links podem ser criados pelo comando ln.
$ ln wine-faq emulador $ls -i wine-faq emulador 22096 wine-faq 22096 emulador

O comando ls -l fornece na segunda coluna o nmero de links que existe para um arquivo. u Como os diretrios so na verdade arquivos contendo associaes entre inodes e nomes de o a co arquivos, eles tambm podem ter links apontando para si. e Observe que nos diretrios sempre existem no m o nimo dois links, o . e o ...

7.4.2

Links Simblicos o

Os links simblicos permitem que seja criado um novo nome de arquivo apontando para o um mesmo arquivo, mas a ligao no feita atravs do inode. ca a e e 24 Verso 4.00 a

Linux Bsico a
$ ln -s wine-faq emulador $ ls -i wine-faq emulador 22096 wine-faq 22101 emulador $ ls -l wine-faq emulador lrwxrwxrwx 1 real users 3 Dec 5 15:00 emulador -> wine-faq -rwxr--r-- 1 real users 12 Dec 36895 18:00 wine-faq

Os atributos de permisso no so utilizados em links simblicos, os links simblicos ina a a o o corporam os atributos do arquivo para o qual ele aponta. Aparentemente os links simblicos e os hard links so iguais, mas na verdade no so. A o a a a maior vantagem dos links simblicos a facilidade de vericar para que arquivo um nome o e aponta, o que no to fcil de se vericar quando utiliza-se hard links. a e a a

7.5

Exerc cios

7.1 Especique os comandos para deixar as permisses de 4 arquivos quaisquer conforme os o atributos de permisso dos arquivos a seguir: a -rw-rw-r--rw-rw-r--rwxr-xr--rwxrwxr-x 1 1 1 1 real real real real real real real real 203 704 2965 601 set set set set 7 7 4 7 14:41 15:32 10:48 15:32 biblio.tex compac.aux scp1.sh scp2.sh

7.2 Voc j deve ter percebido que pode acessar o arquivo de senhas (/etc/passwd). Qual e a seria o motivo para o administrador do sistema deixar esse arquivo to desprotegido? Se a voc fosse o administrador o que voc faria? e e 7.3 Se voc fosse administrador de um servidor http de um mquina Linux ou Unix, de que e a forma voc deniria as permisses dos arquivos html e dos diretrios? e o o 7.4 Voc j deve ter encontrado pginas html com links apontando para arquivos inexistentes. e a a Muitas vezes isso ocorre devido a incoerncia entre os nomes reais dos arquivos e os e supostos nomes de arquivos para os quais os links apontam. O que o administrador de um site poderia fazer para minimizar esse tipo de problema?

25

Verso 4.00 a

Linux Bsico a

26

Verso 4.00 a

Cap tulo 8

Controle de Jobs e Processos


8.1 Jobs e Processos

O controle de jobs permite gerenciar vrios comandos rodando ao mesmo tempo. Cada vez a que um comando executado ele inicia um processo. O comando ps permite a visualizao e ca dos processos que esto em execuo no momento. a ca
$ ps PID TTY STAT 1700 p4 S 1703 p4 S 1912 p4 R

TIME 0:00 0:00 0:00

COMMAND /bin/login -h viola dmat.furg.br -p -bash ps

O PID listado na primeira coluna a identicao do processo, um nmero que cada e ca e u processo recebe ao ser inicializado. A coluna COMMAND mostra o nome do programa que est a sendo executado. Uma listagem completa dos processos que esto rodando em uma mquina pode ser obtida a a com o comando ps aux. Os termos job e processo se confundem, mas geralmente chama-se um processo de job quando se est trabalhando com controle de jobs, ou seja, quando preciso alternar entre uma a e tarefa e outra, por exemplo, editando um arquivo e procurando um arquivo em um servidor ftp.

8.2

Background e Foreground

Os jobs podem estar em background ou em foreground. No pode haver mais de um job em a foreground ao mesmo. O job que est em foreground com o qual o usurio est interagindo, a e a a jobs em background cam sendo executados sem a interao do usurio. ca a Geralmente so colocados em background jobs muito demorados que precisam pouca ina terao com o usurio, por exemplo, o download de um arquivo grande via ftp ou http, comca a pilao ou compactao de arquivos grandes. Colocando esses jobs em background no ca ca a e 27

Linux Bsico a necessrio esperar que eles terminem para poder utilizar o mesmo shell. a Os jobs tambm podem ser suspensos para que continuem sua execuo mais tarde, tanto e ca em foreground quanto em background. Caso um job seja interrompido utilizando Ctrl+C, no ser poss reinici-lo do ponto de a a vel a parada, pois o job j estar morto. a a

8.3

Colocando em Background e Matando Jobs

O comando yes pode ser usado para uma exemplicao bastante simples do funcionamento ca do controle de jobs. Esse comando envia um nmero indeterminado de y para a sa padro. u da a Caso ele seja executado sem nenhum redirecionamento os y aparecero na tela (sa padro), a da a portanto no exemplo 8.3.1 ele ser redirecionado a para /dev/null. a
$ yes >/dev/null

Exemplo 8.3.1: redirecionamento da sa do comando yes da Pode-se observar que executando-se o comando dessa forma o prompt do shell no volta, a pois o yes est em foreground. Para executar o mesmo programa em background preciso a e colocar no nal da linha de comando o s mbolo &. Observe o exemplo:
$ yes >/dev/null & [1] 3453

Nesse caso, a linha de comando volta para o usurio. O [1] o nmero do job e o nmero a e u u 3453 a identicao do processo (PID). Pode-se utilizar o comando jobs para vericar os e ca jobs em funcionamento.
$ jobs [1]+ Running

yes >/dev/null

O comando ps tambm poderia ser usado. e O comando kill utilizado para matar um processo. Ele aceita como argumento tanto o e nmero do job quanto a identicao do processo (PID). u ca Pelo n mero do job: u
$ kill %1 $ jobs [1]+ Terminated

yes >/dev/null

28

Verso 4.00 a

Linux Bsico a Pelo PID:


$ kill 3453 $ ps 3230 p0 S 0:00 -bash 3635 p0 R 0:00 ps [1]+ Terminated

yes >/dev/null

8.4

Parando e Reiniciando Jobs

Outra maneira de colocar um job em background inici-lo normalmente em foreground, e a suspend-lo e depois reinici-lo. Para isso, em vez de se utilizar Ctrl+C, que interrompe o e a processo, deve-se utilizar Ctrl+Z, que o suspende.
$ yes >/dev/null Ctrl+Z [1]+ Stopped

yes >/dev/null

Nesse momento o job est suspenso, para que ele recomece pode-se utilizar os comandos a fg (foreground) ou bg (background).
$ fg yes >/dev/null

Dessa forma o usurio ca novamente sem o prompt do shell, observe o que ocorre caso ele a utilize o bg.
$ bg [1]+ yes >/dev/null & $ jobs [1]+ Running

yes >/dev/null

Os comandos fg e bg podem ser usados em conjunto com o nmero do job que se deseja u colocar em background ou foreground.
$ bg %2

Exemplo 8.4.1: Exemplo de uso do bg Nesse caso o job de nmero 2 voltaria a funcionar em background. u Obs.: O PID no pode ser usado no fg e bg. a 29 Verso 4.00 a

Linux Bsico a

8.5

Mantendo os jobs ativos aps o trmino do shell o e

Sempre que o shell encerrado, os processos (jobs) lhos dele so encerrados tambm. e a e Entretanto, muitas vezes necessrio deixar jobs executando mesmo depois de se ter sa do e a do sistema. O comando nohup pode ser usado para que os jobs no sejam encerrados. a Sintaxe: nohup linha-de-comando > arquivo-de-sada
$ cat >teste yes >/dev/null Ctrl+D $ nohup teste > nohup.out $ logout

Aps isso, se o usurio entrar no sistema novamente, perceber que o yes ainda estar sendo o a a a executado. Caso no fosse feito o redirecionamento para /dev/null, o arquivo nohup.out a cresceria at no haver mais espao em disco. e a c

8.6

Escalonamento de Jobs

O Linux permite o agendamento de jobs, isto , pode-se determinar horrios para que um e a programa, um script ou um comando seja executado. Esse escalonamento feito pelo comando e at. Sintaxe: at [-f arquivos] [-m] horrio a Opes mais importantes: co -f : l os jobs de arquivos, em vez de ler da entrada padro (stdin) e a -m : envia um e-mail quando encerrar o job. O horrio pode ser especicado de diferentes maneiras. a Hora: hh:mm [am | pm] midnight | noon | teatime | now Data: ms dia [,ano] e dia today | tomorrow Podem ser feitos incrementos nos tempos com o s mbolo + do valor do incremento e da unidade de tempo, que pode ser minutes, hours, days, weeks, months. 30 Verso 4.00 a

Linux Bsico a Os jobs escalonados podem ser listados com o comando atq e removidos com o comando atrm seguido do nmero do job. u

8.7

Exerc cios

8.1 Liste os arquivos do diretrio /etc redirecionando a sa para o comando less. Faa o da c com que essa seqncia de comandos que em background . ue 8.2 Coloque o comando yes em background. No esquea de redirecionar a sa para a c da /dev/null. 8.3 Mostre todos os processos que esto ativos no sistema. a 8.4 Mostre os jobs que voc inicializou. e 8.5 Utilize o comando top para vericar qual processo mais est utilizando a CPU. a 8.6 Coloque o processo criado no exerc 1.1 em foreground. cio 8.7 Mate o job criado no exerc 8.2. cio 8.8 O que pode acontecer caso o comando yes seja direcionado para um arquivo? 8.9 Agende um job para daqui h 30 segundos. a 8.10 Crie um arquivo com o contedo: yes >/dev/null. Agende a execuo deste arquivo u ca para daqui h 1 minuto. a 8.11 Verique se algum processo est em execuo. Caso existam processos em execuo, a ca ca mate-os.

31

Verso 4.00 a

Linux Bsico a

32

Verso 4.00 a

Cap tulo 9

Arquivando e Compactando arquivos

tar:

empacota vrios arquivos em um s. a o <arqN>

Sintaxe: tar <op~es> <arq1> <arq2> ... co Opes mais usadas: co c t x z v f

:cria um novo arquivo :lista o contedo de um arquivo u :extrai arquivos :compacta e descompacta usando gzip e compress :mostra os arquivos adicionados ou extra dos :indica que o argumento ser um arquivo (o tar utiliza, por falta, o dispositivo a de ta) - :utiliza stdin e stdout Exemplos: $tar cvf backup.tar /etc $tar tvf backup.tar E importante ter cuidado na hora de desempacotar um arquivo, pois os arquivos empacotados guardam o caminho conforme foram gerados. No exemplo acima, o comando tar extrairia os arquivos no diretrio /etc. Para evitar isso pode-se fazer da seguinte forma: o
$ $ $ $ $ cd /etc tar cvf ~/backup.tar cd tar tvf backup.tar tar xvf backup.tar

gzip:

compacta e descompacta arquivos. 33

Linux Bsico a Sintaxe: gzip [-op~es] <arq1> <arq2> ... co Parmetros mais usados: a d: c: 9: t: descompacta (equivale a gunzip ou gzip -d). sa em stdout. da compresso mxima. a a testa a integridade do arquivo. <arqN>

Exemplos: $gzip -9 backup.tar #Cria o arquivo backup.tar.gz $tar xvfz backup.tar.gz #Descompacta e desempacota o arquivo $gzip -dc backup.tar.gz | tar xvf - #Tambm descompactaria o arquivo e

compress:

compacta e descompacta arquivos.

Sintaxe: compress [op~es] <arq1> <arq2> ... <arqN> co Parmetros mais usados: a d: descompacta arquivos (mesmo que uncompress). Exemplos: $compress backup.tar #Cria o arquivo backup.tar.Z $tar xvfz backup.tar.Z #Descompacta e desempacota o arquivo

9.1

Exerc cios

9.1 Empacote e compacte com o gzip todos os arquivos existentes a partir do seu diretrio o home. 9.2 Crie no diretrio que desejar um diretrio chamado bkp. o o 9.3 Descompacte no diretrio bkp o arquivo criado. o 9.4 Refaa os exerc c cios utilizando o compress. 9.5 Crie um arquivo arq.tar.gz utilizando o argumento - do comando tar.

34

Verso 4.00 a

Cap tulo 10

Dicas e Truques
Nesta parte da apostila voc encontrar algumas dicas prticas que facilitam a vida do e a a usurio Linux. a Sempre que for necessrio fazer uma referncia ao seu diretrio home, utilize o s a e o mbolo ~.
$ ls ~ $ cp /etc/* ~/

Sempre que for necessrio referenciar o ultimo diretrio visitado pelo usurio, pode-se a o a faz-lo com o caracter -. e
$ pwd /usr/root $ cd linux_curso/ $ cd $ pwd /usr/root

No Bash, a tecla TAB serve para completar nomes de arquivos e diretrios e/ou mostrar o as opes de arquivos dispon co veis. Os usurios podem utilizar os comandos do pacote mtools, esses comandos so uteis a a para manipular arquivos em disquetes e outros dispositivos. Dentre os comandos mais usados pode-se citar mcopy, mdel, mdir, etc. Para uma descrio detalhada, consulte o ca man.
$mdir a: $mcopy ~/.bash_profile a:

35

Linux Bsico a

36

Verso 4.00 a

Cap tulo 11

Criando Shell Scripts


Os shells do Linux podem ser usados para criar programas, eles possuem estruturas de controle, deciso e utilizam-se de variveis. Muita coisa pode ser feita utilizando apenas shell a a scripts. Nesse cap tulo sero estudadas vrias estruturas dispon a a veis no bash.

11.1

Primeiros Passos

Os shell scripts podem ser armazenados em arquivos para que sejam executados como verdadeiros programas. A seguir mostrado um script que procura uma determinada string e em vrios arquivos: a
#!/bin/bash # Procura o string teste nos arquivos # mostrando o contedo dos arquivos que u # contm o string e for arq in * do if grep -q teste $arq then more $arq fi done exit 0

Nesse exemplo pode-se perceber que o caracter # usado para iniciar comentrios, e a e bastante comum a utilizao de comentrios em scripts pois so usados como documentao ca a a ca e guia de utilizao dos arquivos. A primeira linha do arquivo possui um tipo especial de ca comentrio (#!), esses dois caracteres juntos indicam ao sistema que o programa passado a como argumento deve ser invocado para a execuo do arquivo, nesse caso ser invocado o ca a bash. 37

Linux Bsico a Tambm pode-se notar tanto na linha que invoca o comando grep como na linha que e invoca o comando more que poss executar qualquer programa que puder ser localizado e vel nos diretrios apontados pela varivel PATH, no caso de um programa no presente em nenhum o a a diretrio do PATH, poss tambm informar sua localizao, precedendo o comando com seu o e vel e ca caminho completo. O comando exit facilita a interao entre os programas ou scripts, ele pode ser usado ca para informar a um programa chamador o estado de sa do script, por exemplo, se o script da encerrou de forma normal ou anormal. Para invocar o script necessrio que o usurio tenha permisso de execuo do arquivo, e a a a ca por isso muitas vezes se faz necessrio o uso do comando chmod. Tambm importante observar a e e que caso o script esteja em um diretrio no referenciado pelo PATH ser necessrio preceder o a a a o nome do script com a sua localizao. ca

11.2

A Sintaxe do Shell

Nesta seo sero vistos os principais elementos necessrios para a construo de scripts. ca a a ca

11.2.1

Variveis a

As variveis no precisam ser declaradas, elas so automaticamente criadas quando usadas a a a pela primeira vez. Todas variveis so armazenadas como strings, mesmo no caso de conterem a a valores numricos, a converso de string para um valor numrico feita quando se realiza e a e e alguma operao numrica sobre a varivel. Como so partes do shell, as variveis tambm ca e a a a e so sens a veis ao caso. A varivel X no a mesma varivel x. a a e a O contedo de uma varivel extra precedendo-a do caracter $ e pode ser impresso u a e do na tela com o comando echo. O exemplo a seguir ilustra o uso desse caracter:
$ $nome=Rodrigo $ $echo $nome Rodrigo $ $curso="Curso Basico de Linux" $ $echo $curso Curso Basico de Linux $ $soma=2+2 $ $echo $soma 2+2

E importante observar que no podem haver espaos em nenhum dos lados do sinal de a c atribuio (=), alm disso caso o texto a ser atribu a uma varivel contenha espaos, ca e do a c e necessrio que se utilize aspas duplas delimitando a string. a Nesse ponto o uso das aspas nas atribuies precisa ser bem entendido, pois podem surgir co efeitos inesperados caso elas sejam usadas de maneira inadequada. A seguir so exemplicaa das algumas situaes que mostram os diferentes comportamentos provocados por pequenas co alteraes na utilizao das aspas: co ca 38 Verso 4.00 a

Linux Bsico a
#!/bin/bash var="Ola" echo echo echo echo $var "$var" $var \$var

echo Digite Algo read var echo $var agora vale $var exit 0

Esse exemplo produzir o seguinte resultado: a


Ola Ola $var $var Digite Algo Algo $var agora vale Algo

No script apresentado ca claro a diferena entre o uso de aspas simples, aspas duplas. As c aspas duplas no alteram a substituiao da varivel enquanto que as aspas simples e a barra a c a invertida sim. No exemplo tambm foi usado o comando read que faz a leitura de uma string e armazendo o valor lido em uma varivel. a

Parmetros a Caso o script seja invocado com argumentos, sero criadas algumas variveis de parmetros, a a a essas variveis guardaro as informaes dos argumentos passados. Mesmo que um script seja a a co invocado sem argumentos as variveis $#, contendo o nmero de argumentos passados, nesse a u caso 0, e a varivel $0, contendo o nome do script sero criadas. a a As variveis de parmetros so: a a a $1, $2, ...: argumentos enviados ao script $*: uma lista de todos os argumentos em uma mesma varivel a 39 Verso 4.00 a

Linux Bsico a
#!/bin/bash echo echo echo echo "O programa $0 estah sendo executado..." "O primeiro argumento passado foi $1" "O segundo argumento foi $2" "Os argumentos passados foram $*"

exit 0

Esse script deve ser invocado com no m nimo dois argumentos para que se possa vericar o contedo das variveis. u a

11.2.2

Condies co

Todas linguagens de programao precisam de estruturas de teste para que decises possam ca o ser tomadas. Um shell script pode testar o cdigo de encerramento de qualquer comando, ou o at mesmo cdigos de sa de outros scripts, por isso importante encerr-los com o comando e e da e a exit. Para realizar testes pode-se utilizar o comando test, que pode ser abraviado pelo operador intermixado [ ].
if test -f prog.c then echo "O arquivo prog.c existe" else echo "O arquivo prog.c nao existe" fi

Exemplo 11.2.1: usando test No exemplo 11.2.1 foi utilizada a condio de teste de existncia de arquivo, caso o arquivo ca e exista o comando test retorna verdadeiro, caso contrrio retorna falso. Nesse exemplo pode a ser observado tambm a estrutura de controle if-then-else-fi. e

if [ -f prog.c ]; then echo "O arquivo prog.c existe" else echo "O arquivo prog.c nao existe" fi

Exemplo 11.2.2: usando [ ]

O exemplo 11.2.2 funciona da mesma forma que o exemplo 11.2.1, sendo que nesse caso foi utilizado o comando de teste na forma de ]. Alguns detalhes devem ser observados: 40 Verso 4.00 a

Linux Bsico a E obrigatrio o uso de espaos aps a abertura dos colchetes e antes do seu o c o fechamento. Caso queira se colocar o then na mesma linha do if deve se utilizar o ;. Comparaoes de Strings c string Verdadeiro se a string no vazia a e string1 = string2 Verdadeiro se as strings so iguais a string1 != string2 Verdadeiro se as strings so diferentes a -n string Verdadeiro se a string no nula a e -z string Verdadeiro se a string nula (vazia) e Comparaoes Aritimticas c e express~o2 Verdadeiro se as expresses so a o a iguais express~o2 Verdadeiro se as expresses so dia o a ferentes express~o2 Verdadeiro se a expresso1 maior a a e que a expresso2 a express~o2 Verdadeiro se a expresso1 maior a a e ou igual a expresso2 a express~o2 Verdadeiro se a expresso1 menor a a e que a expresso2 a express~o2 Verdadeiro se a expresso1 menor a a e ou igual a expresso2 a Nega a expresso, retorna true se a a expresso for falsa e vice versa a

express~o1 -eq a express~o1 -ne a express~o1 -gt a express~o1 -ge a express~o1 -lt a express~o1 -le a ! express~o a

-d -e -f -r -s -w -x

arquivo arquivo arquivo arquivo arquivo arquivo arquivo

Condioes de Arquivos c Verdadeiro se o arquivo um diretrio e o Verdadeiro se o arquivo existe Verdadeiro se o arquivo regular e Verdadeiro se o arquivo pode ser lido Verdadeiro se o arquivo tiver tamanho diferente de zero Verdadeiro se o arquivo pode ser gravado Verdadeiro se o arquivo pode ser executado

11.2.3

Estruturas de Controle

O shell oferece um conjunto de estruturas de controle muito similares as estruturas das linguagens de programao. ca if : O comando if testa uma condio e caso verdadeiro executa um grupo de comandos, ca caso contrrio pode opcionalmente executar outro grupo de comandos. a 41 Verso 4.00 a

Linux Bsico a Sintaxe: if condi~o ca then comandos else comandos fi

#!/bin/bash echo "Qual sua idade? " read idade if [ $idade -ge 18 ] then echo "Voce eh maior de idade" else echo "Voce eh menor de idade" fi

O shell possui uma facilidade para encadear comandos if, se dentro do bloco de comandos else pretende-se executar outro if pode-se abreviar o cdigo utilizando-se elif. o for: a construo for usada para efetuar iteraes atravs de um grupo de valores. ca e co e Particularmente nos shell scripts essas iteraes so feitas em strings, estas podem ser co a simplesmente especicadas uma a uma, ou pode-se utilizar dos caracteres coringa do shell. Sintaxe: for varivel in valores a do comandos done
#!/bin/bash for var in fulano beltrano xyz 43 do echo $var done exit 0

Exemplo 11.2.3: comando for No exemplo 11.2.3 a varivel var assume os valores fulano;beltrano;xyz;43 a cada a iterao. ca 42 Verso 4.00 a

Linux Bsico a
#!/bin/bash for arq in *; do echo "Mostrando arquivo $arq" more $arq done exit 0

Exemplo 11.2.4: comando for No exemplo 11.2.4 a varivel arq assume os valores resultado da expanso do caracter a a coringa (*). while: o comando while funciona de forma semelhante ao normalmente encontrado em linguagens de programao, isto , enquanto uma determinada condio for verdadeira ca e ca executa um determinado grupo de comandos. Sintaxe: while condi~o ca do comandos done
#!/bin/bash echo "Digite a palavra chave:" read chave while [ "$chave" != "abretesesamo" ]; do echo "Desculpe, mas essa nao eh a palavra chave!" echo "Tente novamente..." read chave done exit 0

Neste exemplo feita a leitura da varivel chave e enquanto seu valor for diferente de e a abretesesamo o programa ca em loop, refazendo a leitura a cada iterao. ca until: similar ao comando while, sendo que a condio testada invertida. ca e Sintaxe: until condi~o ca do comandos done 43 Verso 4.00 a

Linux Bsico a case: o comando case serve para comparar o valor de uma varivel a um padro e a a executar um determinado conjunto de comandos. Sintaxe:

case varivel in a padr~o [| padr~o | ...] ) comandos;; a a padr~o [| padr~o | ...] ) comandos;; a a ... esac

#!/bin/bash echo "Eh manha? Responda sim ou nao" read hora case "$hora" in "sim" | "Sim" | "SIM" | "s" | "S" ) echo "Bom Dia";; "nao" | "Nao" | "NAO" | "n" | "N" ) echo "Boa Tarde";; * ) echo "Resposta nao reconhecida";; esac exit 0

O script apresentado como exemplo faz a leitura da varivel hora e a compara com um a conjunto de strings. Caso o valor de alguma delas case com o valor varivel, o bloco a de comandos correspondente executado. O bloco de comandos correspondente ao * e e executado caso o valor da varivel no case com nenhuma das clusulas do comando. a a a Listas E e OU: as listas E e OU funcionam de forma semelhante aos Ifs encadeados, esta uma facilidade frequentemente presente em linguagens script e em geral reduzem e a rea de cdigo fonte dos scripts. a o A lista E : executa o comando seguinte caso todos comandos executados anterioriormente tenham retornado um resultado verdadeiro. Sintaxe: comando1 && comando2 && comando3 ...

44

Verso 4.00 a

Linux Bsico a
#!/bin/bash [ -f scp.sh ] && [-f scp2.sh ] && echo "Os dois arquivos existem!" exit 0

A Lista OU: funciona de forma semelhante a lista E, sendo que os comandos da lista so executados em seqncia at que um deles tenha resultado verdadeiro. a ue e Sintaxe: comando1 || comando2 || comando3 ...

#!/bin/bash [ -f alibaba.txt ] || echo "Arquivo n~o encontrado!!" a exit 0

11.2.4

Comandos

Nesta seo sero estudados alguns comandos internos e externos do shell. Os comandos ca a internos, em geral no podem ser executados diretamente do prompt do shell, so oferecidos a a apenas aos scripts. break: desvia o uxo de controle de um lao (for, while, until) para o m do c mesmo. continue: faz com que o lao (for, while, until) passe para a prxima iterao. c o ca exec: recobre o cdigo do programa que est sendo executado pelo cdigo do programa o a o freqentemente usado para executar um que passado como argumento do comando. E e u programa e encerrar o shell corrente. export: permite que variveis denidas no shell tornem-se dispon a veis nos subshells.

11.3

Exerc cios

11.1 Observe o exemplo abaixo e identique um problema que pode eventualmente ocorrer: 45 Verso 4.00 a

Linux Bsico a
#!/bin/bash read var if [ $var = "xxx" ] then echo Certo else echo Errado exit 0

11.2 O script abaixo usado para inicializar um programa que trata das requisies de acesso e co a um determinado banco de dados. Procure identicar estruturas de controle abordadas no curso e vericar como o script funciona.
Exemplo #! /bin/sh # postgresql This is the init script for starting up the # PostgreSQL server # # chkconfig: 345 85 15 # description: Starts and stops the PostgreSQL backend # daemon that handles all database requests. # processname: postmaster # pidfile: /var/run/postmaster.pid # # Source function library. . /etc/rc.d/init.d/functions # Get config. . /etc/sysconfig/network # Check that networking is up. # Pretruety much need it for postmaster. [ ${NETWORKING} = "no" ] && exit 0 [ -f /usr/local/pgsql/bin/postmaster ] || exit 0 # This script is slightly unusual in that the name of the # daemon (postmaster) is not the same as the name of the # subsystem (postgresql) # See how we were called. case "$1" in start) echo -n "Starting postgresql service: " #Coloquei aqui o parametro -i e -p

46

Verso 4.00 a

Linux Bsico a
su postgres -c /usr/local/pgsql/bin/postmaster -S -i -p 5432 -D /usr/local/pgsql/data sleep 1 pid=pidof postmaster echo -n "postmaster [$pid]" touch /var/lock/subsys/postgresql echo $pid > /var/run/postmaster.pid echo ;; stop) echo -n "Stopping postgresql service: " killproc postmaster sleep 2 rm -f /var/run/postmaster.pid rm -f /var/lock/subsys/postgresql echo ;; status) status postmaster ;; restart) $0 stop $0 start ;; *) echo "Usage: postgresql {start|stop|status|restart}" exit 1 esac exit 0

11.3 Faa um script que a cada 60 segundos verique se um determinado usurio est logado c a a no sistema, quando o usurio se logar o script dever mostrar uma mensagem na tela. a a Dica: utilize os comandos grep, who, sleep.

47

Verso 4.00 a

Você também pode gostar