Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
daniel@gaspar.ws
Janeiro/2014
Laboratório
Nacional de
Computação
Científica
Introdução à Linux
Laboratório
Nacional de
Computação
Científica
2 Sistema Operacional
6 Distribuições Laboratório
Nacional de
Computação
Científica
Software livre
6=
Software gratuito
Laboratório
Nacional de
Computação
Científica
2 Sistema Operacional
6 Distribuições Laboratório
Nacional de
Computação
Científica
Definição
Um programa ou um conjunto de programas cuja função é gerenciar
os recursos do sistema, fornecendo uma interface entre o computa-
dor e o usuário.
Basicamente possui as seguintes funções:
Definir qual programa recebe atenção do processador;
Gerenciar memória;
Criar um sistema de arquivos;
Gerenciar usuários;
Etc. Laboratório
Nacional de
Computação
Científica
Microsoft Windows
Linux
UNIX
Apple Mac OS
Apple OS X
Laboratório
Nacional de
Computação
Científica
2 Sistema Operacional
6 Distribuições Laboratório
Nacional de
Computação
Científica
Laboratório
Nacional de
Figura : IBM 704 Computação
Científica
Laboratório
Figura : IBM S/360 Nacional de
Computação
Científica
Laboratório
Nacional de
Figura : PDP-11 Computação
Científica
Laboratório
Época do surgimento dos primeiros computadores pessoais.
Nacional de
Computação
Científica
Laboratório
Nacional de
Computação
Científica
Laboratório
Nacional de
Computação
(c) Linus Torvalds (d) Tux Científica
Laboratório
Nacional de
Computação
Científica
2 Sistema Operacional
6 Distribuições Laboratório
Nacional de
Computação
Científica
Preço
Sistemas Linux no geral são gratuitos. Uma cópia do Microsoft
Windows 8.1 pode chegar a custar até R$ 699,00.
Segurança
Software de código aberto permite que todos leiam o que ele de fato
está fazendo. Você confia seus dados à Microsoft? O que será que
o Windows faz com suas informações?
Laboratório
Nacional de
Computação
Científica
Mais segurança
Por ser um sistema pouco utilizado, as pessoas mal-intencionadas
preferem desenvolver vı́rus e outros malware para Microsfot Win-
dows.
Personalização
Devido ao código ser aberto, qualquer pessoa pode modificar o sis-
tema conforme sua necessidade ou gosto. Que tal colocar o Menu
Iniciar do lado direito da tela?
Laboratório
Nacional de
Computação
Científica
Variedade de programas
Como Linux não é muito popular, muitos fabricantes não lançam
seus programas para o sistema.
Suporte à Hardware
Nem todos os fabricantes de hardware disponibilizam drivers para
seus dispositivos para Linux. Existem controladores código-abertos
que podem não ser tão bons quanto os proprietários.
Laboratório
Nacional de
Computação
Científica
2 Sistema Operacional
6 Distribuições Laboratório
Nacional de
Computação
Científica
Laboratório
Nacional de
Figura : XDM
Computação
Científica
Laboratório
Nacional de
Figura : KDM
Computação
Científica
Laboratório
Nacional de
Figura : GDM
Computação
Científica
Laboratório
Nacional de
Figura : LightDM
Computação
Científica
Laboratório
Nacional de
Figura : MDM Computação
Científica
Laboratório
Nacional de
Figura : Gnome Computação
Científica
Laboratório
Nacional de
Figura : KDE Computação
Científica
Laboratório
Figura : Cinnamon
Nacional de
Computação
Científica
Laboratório
Figura : MATE Nacional de
Computação
Científica
2 Sistema Operacional
6 Distribuições Laboratório
Nacional de
Computação
Científica
Ex:
Ubuntu Uma das mais famosas distribuições.
Derivada do Debian
Kernel Linux + Gnome + Firefox, LibreOffice, ...
Mint Derivada do Ubuntu
Kernel Linux + Cinnamon ou MATE
Debian Uma das mais clássicas
Laboratório
Possui arquitetura de software instalado baseada
Nacionalem de
Computação
pacotes o que facilita a instalação e desinstalação de
programas Científica
Introdução ao Bash
Laboratório
Nacional de
Computação
Científica
7 Usuários e Grupos
8 Estrutura de Arquivos
Usuário
Uma ’pessoa’ que acessa o computador e possui um nome de usuário
e uma senha respectiva. É necessário para acessar a máquina, seja
localmente ou remotamente.
Ex:
Usuário: verao2014
Senha: verao2014
Laboratório
Cada usuário possui uma pasta pessoal onde deve guardarNacional
seus de
arquivos. Esta pasta é chamada home do usuário. Computação
Científica
Usuário root
Existe um usuário especial, chamado superusuário ou root que é
o administrador do sistema. Este usuário pode acessar qualquer
dispositivo e qualquer arquivo presente no computador e realizar
alterações nos arquivos do sistema.
Atenção
O usuário root não deve ser utilizado normalmente, apenas para re-
alizar manutenção do sistema (como instalar programas). LAamaioria
boratório
Nacional
dos sistemas não irá inclusive permitir que acesse interface gráfica de
como root. Computação
Científica
7 Usuários e Grupos
8 Estrutura de Arquivos
Laboratório
Nacional de
Computação
Científica
Ex:
/home/ d a n i e l / Documentos / s l i d e s l i n u x . p d f
Laboratório
Nacional de
Computação
Científica
7 Usuários e Grupos
8 Estrutura de Arquivos
Shell
Programa que recebe, interpreta e executa os comandos de usuário,
aparecendo na tela como uma linha de comandos, representada por
um prompt, que aguarda na tela os comandos do usuário.
Ex:
Bash, Command.com, cmd.exe
Laboratório
Nacional de
Computação
Científica
Shell
Programa que recebe, interpreta e executa os comandos de usuário,
aparecendo na tela como uma linha de comandos, representada por
um prompt, que aguarda na tela os comandos do usuário.
Ex:
Bash, Command.com, cmd.exe
Shell Script
Linguagem de programação interpretada por um shell de um sistema
operacional. Laboratório
Nacional de
Computação
Científica
Bash
Acrônimo de Bourne-again shell, é um shell criado em 1987 e usado
como padrão da grande maioria dos kernels de Linux, Mac OS X e
Darwin. Também disponı́vel para Windows através de pacotes como
cygwin.
Laboratório
Nacional de
Computação
Científica
7 Usuários e Grupos
8 Estrutura de Arquivos
Laboratório
Nacional de
Computação
Científica
Laboratório
Nacional de
Computação
Científica
usuário@máquina:pasta$
Laboratório
Nacional de
Computação
Científica
Ex:
l s −l a > l i s t a g e m . t x t
t r ” ” ”\n” < t e s t e . t x t
cat arquivo . tx t | grep ” oi ”
Laboratório
Nacional de
Computação
Científica
7 Usuários e Grupos
8 Estrutura de Arquivos
Ex:
d a n i e l @ E 2 0 0 : ˜ $ cd Documentos
d a n i e l @ E 2 0 0 : ˜ / Documentos$ cd . . / . .
d a n i e l @ E 2 0 0 : / home$ cd ˜
d a n i e l @ E 2 0 0 : ˜ $ cd /tmp
d a n i e l @ E 2 0 0 : / tmp$
Laboratório
Nacional de
Computação
Científica
d a n i e l @ E 2 0 0 : ˜ $ cd Documentos
d a n i e l @ E 2 0 0 : ˜ / Documentos$ l s
c r o n o grama . o d t
s l i d e s . pdf
d a n i e l @ E 2 0 0 : ˜ / Documentos$ l s ˜
Area de t r a b a l h o
m a t r i x . t a r . gz
Laboratório
Nacional de
Computação
Científica
Ex:
d a n i e l @ E 2 0 0 : / tmp$ m k d i r t e s t e
d a n i e l @ E 2 0 0 : / tmp$ cd t e s t e
d a n i e l @ E 2 0 0 : / tmp/ t e s t e $ m k d i r ˜/ p a s t a
d a n i e l @ E 2 0 0 : / tmp/ t e s t e $ cd ˜/ p a s t a
daniel@E200 :˜/ pasta$
Laboratório
Nacional de
Computação
Científica
Ex:
cat t e s t e . txt
Conteudo do a r q u i v o t e s t e . t x t
Laboratório
Nacional de
Computação
Científica
Ex:
head −n3 . z i r . c f g
#CaR P r o p e r t i e s Laboratório
#Sun Jun 06 1 0 : 1 8 : 1 8 BRT 2010 Nacional de
z i r k e l f r a m e . h=952 Computação
Científica
Ex:
t a i l −n3 t w i t t e r . html
</ s c r i p t > Laboratório
Nacional de
</body></html> Computação
Científica
Ex:
echo ” Sao 3 h o r a s ” | t r ” 3 ” ” 6 ”
Sao 6 h o r a s
t r ” ” ”\n” < t e s t e . t x t
Conteudo Laboratório
do Nacional de
arquivo Computação
teste . txt Científica
Uso:
s e d −e ' s /ORIGINAL/SUBSTITUIDO/g '
O s indica que é uma substituição, e o g que é global (todas
as instâncias do termo devem ser substituı́das)
Ex:
Laboratório
Nacional de
Computação
echo ” Cont do a r q u i v o ” | s e d −e ' s / a r q u i v o / o i /g '
Científica
Cont do o i
Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 67/ 105
grep
Realiza o login como usuário root. Deve ser usado para realizar
manutenção do sistema.
daniel@E200 ˜ $ su
Senha :
E200 d a n i e l #
d a n i e l @ E 2 0 0 ˜ $ sudo c a t / e t c / f u s e . c o n f
[ sudo ] p a s s w o r d f o r d a n i e l :
mount max = 1000
user allow other
daniel@E200 ˜ $
Laboratório
Nacional de
Computação
Neste caso, a senha que é pedida é a senha do próprio usuário.
Científica
Laboratório
Nacional de
Figura : Via xkcd.com Computação
Científica
Laboratório
Nacional de
Computação
Científica
Atividade 1
Faça um script para imprimir na tela o aviso ”Abaixo está sua tabela
de partições montadas:”e mostrar embaixo a tabela de partições.
Dica
A tabela de partição num sistema Linux fica num arquivo de texto
localizado em /etc/fstab. Laboratório
Nacional de
Computação
Científica
#! / b i n / b as h
echo ” A b a i x o e s t a s u a t a b e l a de p a r t . montadas : ”
cat / etc / fstab
Laboratório
Nacional de
Computação
Científica
Cuidado
Não separe com espaços o sinal de igual do nome da variável, nem
do valor da mesma. Laboratório
Nacional de
Computação
Científica
Ex:
nome=” D a n i e l ”
echo ” Ola $nome”
Ola D a n i e l
Ex:
r e s u l t =` c a t t e s t e . t x t `
echo ” R e s u l t a d o : $ r e s u l t ”
R e s u l t a d o : Conteudo do a r q u i v o t e s t e . t x t
Laboratório
Nacional de
Computação
Científica
Atividade 2
Faça um script que guarde a data de hoje numa variável e depois a
imprima na tela.
Dica
O comando Linux para se obter a data de hoje é date +%x.
Laboratório
Nacional de
Computação
Científica
Atividade 2
Faça um script que guarde a data de hoje numa variável e depois a
imprima na tela.
Dica
O comando Linux para se obter a data de hoje é date +%x.
#! / b i n / b as h
h o j e =` d a t e +%x `
Laboratório
echo ” Hoje eh d i a $ h o j e ” Nacional de
Computação
Científica
i f [ $ v a r i a v e l == ” minha s t r i n g ” ] ; t h e n
echo ”Eh i g u a l ! ”
else
echo ”Eh d i f e r e n t e ! ”
fi
Cuidado
Laboratório
Obrigatoriamente a instrução then precisa vir em uma nova linha, de
Nacional
ou separada por ponto-e-vı́rgula. Computação
Científica
Ex:
i f [ $ v a r i a v e l == ” minha s t r i n g ” ] ; t h e n
i f [ $ v a r i a v e l != ” minha s t r i n g ” ] ; t h e n
i f [ $ v a l o r −g t 5 ] ; t h e n
i f [ $ v a l o r −ge 5 −a $ v a l o r − l e 10 ] ; t h e n
Cuidado
Laboratório
Respeite o espaço que tem depois da abertura do colcheteNacional
e o antes de
do seu fechamento. Computação
Científica
Dica
O comando Linux para se obter a data de hoje é date +%m.
Dica
Para se ler uma variável do usuário se utiliza o comando read
nomeVariavel. Depois é só acessá-la normalmente com $ na frente.
Cuidado Laboratório
Nacional de
Apesar do número do mês ser um inteiro, ao ler do usuário ou
Computação
consultar no sistema, ele vem no formato de uma string. C i e n t í f i c a
#! / b i n / b as h
i f [ $mes == $ a t u a l ] ; t h e n
echo ”O mes d i g i t a d o eh o a t u a l . ”
else
echo ”O mes d i g i t a d o nao eh o a t u a l . ”
fi Laboratório
Nacional de
Computação
Científica
Dica
Os parâmetros passados por linha de comando para um script podem
ser lidos nele nas variáveis especiais $1, $2 e assim por diante.
Cuidado
Ao executar um script que espera receber parâmetros de linha de
comando, você deve, no ato de invocá-lo, passar estes parâmetros,
Laboratório
como, neste exemplo: Nacional de
./meuscript.sh 10 Computação
Científica
#! / b i n / b as h
a t u a l =` d a t e +%m`
i f [ $1 == $ a t u a l ] ; t h e n
echo ”O mes d i g i t a d o eh o a t u a l . ”
else
echo ”O mes d i g i t a d o nao eh o a t u a l . ”
fi
Laboratório
Nacional de
Computação
Científica
Atividade 5
Altere o script da atividade 4 para que se verifique, antes de tudo
se a quantidade de parâmetro passada é igual a 1.
Dica
A quantidade de parâmetros passada a um script pode ser obtida
na variável especial $#.
Laboratório
Nacional de
Computação
Científica
#! / b i n / b as h
i f [ $# −eq 1 ] ; t h e n
a t u a l =` d a t e +%m`
i f [ $1 == $ a t u a l ] ; t h e n
echo ”O mes d i g i t a d o eh o a t u a l . ”
else
echo ”O mes d i g i t a d o nao eh o a t u a l . ”
fi
else Laboratório
echo ” I n f o r m e um mes v i a l i n h a de comando . ” de
Nacional
fi Computação
Científica
case $ v a r i a v e l in
” V a l o r 1” ) echo ” V a l o r 1 f o i e s c o l h i d o ” ; ;
” V a l o r 2” ) echo ” V a l o r 2 f o i e s c o l h i d o ” ; ;
∗ ) echo ” V a l o r d i f e r e n t e e s c o l h i d o ” ; ;
esac
Cuidado
Os ponto-e-vı́rgula dobrados servem para terminar cada condição do
Laboratório
case. Caso deseja-se executar mais de um comando dentro de cada de
Nacional
Computação
caso, é possı́vel separá-los com um ponto-e-vı́rgula simples.
Científica
for i in $vetor
do
echo ” E s t o u na p o s i c a o $ i ”
done
Cuidado
Diferentemente de outras linguagens de programação, a instrução for
não aceita diretamente valores inteiros como limites (quantidades),
Laboratório
e sim varre por cima de um vetor de tamanho fixo. Nacional de
Computação
Científica
Atividade 6
Faça um script que escreva de 1 até 50 na tela usando for.
Dica
O comando seq de Linux cria um vetor de valores recebendo o
inicial, o incremento (passo) e o final. Por exemplo, para gerar uma
sequência que vai de 0 à 10, com passo de 2 em 2, temos: seq 0
2 10 Laboratório
Nacional de
Computação
Científica
#! / b i n / b as h
f o r i i n ` s e q 1 1 5 0 ` ; do
echo Numero $ i
done
Laboratório
Nacional de
Computação
Científica
Atividade 7
Lembra-se da Atividade 4? Crie um arquivo mes.txt e salve dentro
dele apenas um número representando um mês. Altere o script da
Atividade 4 para, ao invés de receber o mês pela linha de comando,
ele leia o valor dentro deste arquivo.
Laboratório
Nacional de
Computação
Científica
#! / b i n / b as h
a t u a l =` d a t e +%m`
mes=` c a t mes . t x t `
i f [ $mes == $ a t u a l ] ; t h e n
echo ”O mes d i g i t a d o eh o a t u a l . ”
else
echo ”O mes d i g i t a d o nao eh o a t u a l . ”
fi
Laboratório
Nacional de
Computação
Científica
Atividade 8
Modifique o último script para que, ao invés de imprimir na tela,
ele escreva em um arquivo res.txt se o mês digitado é o atual ou
não.
Dica
Lembre-se que o redirecionador > apaga todo o conteúdo do arquivo
de destino e mantém apenas a última escrita, enquanto o >> vai
acrescentando texto no final do arquivo. Laboratório
Nacional de
Computação
Científica
#! / b i n / b as h
a t u a l =` d a t e +%m`
mes=` c a t mes . t x t `
i f [ $mes == $ a t u a l ] ; t h e n
echo ”O mes d i g i t a d o eh o a t u a l . ” > r e s . t x t
else
echo ”O mes d i g i t a d o nao eh o a t u a l . ” > r e s . t x t
fi
Laboratório
Nacional de
Computação
Científica
Atividade 9
Faça um script que pergunte ao usuário 2 número e apresente a
soma, subtração, multiplicação, divisão inteira e resto da divisão
dos mesmos.
Dica
O caractere * possui um significado especial no bash, portanto, para
utilizá-lo a fim de multiplicar, é preciso escapá-lo com uma
Labobarra
ratório
invertida antes. Nacional de
Computação
Científica
#! / b i n / b as h
echo ” D i g i t e o p r i m e i r o numero : ”
r e a d num1
echo ” D i g i t e o s e g u n d o numero : ”
r e a d num2
soma=` e x p r $num1 + $num2 `
d i f f =` e x p r $num1 − $num2 `
p r o d=` e x p r $num1 \∗ $num2 `
d i v =` e x p r $num1 / $num2 `
r e s t o =` e x p r $num1 % $num2 `
echo ”Soma : $soma ”
echo ” S u b t r a c a o : $ d i f f ”
echo ” P r o d u t o : $ p r o d ” Laboratório
Nacional de
echo ” Q u o c i e n t e : $ d i v ” Computação
echo ” R e s t o : $ r e s t o ” Científica
Atividade 10
Faça um script que pergunte o raio de um cı́rculo e informe sua
área e o comprimento de sua circinferência, ambos com 2 casas
decimais.
Laboratório
Dica Nacional de
Acı́rculo = πr 2 e Pcircunferência = 2πr Computação
Científica
#! / b i n / b as h
echo ” E n t r e com o r a i o : ”
read r a i o
echo ” Area : $ a r e a ”
echo ” Comprimento da C i r c u n f e r e n c i a : $comp”
Laboratório
Nacional de
Computação
Científica
daniel@gaspar.ws
Janeiro/2014
Laboratório
Nacional de
Computação
Científica