Você está na página 1de 108

Introdução ao Linux e Shell Script

Daniel Gaspar Gonçalves de Souza

daniel@gaspar.ws

VII Encontro Acadêmico de Modelagem Computacional

Janeiro/2014

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 1/ 105


Parte I

Introdução à Linux

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 2/ 105


Conteúdo do Minicurso

1 Software Livre X Proprietário

2 Sistema Operacional

3 Linux: Um breve histórico

4 Por que (não) usar Linux?

5 Peças de um sistema Linux

6 Distribuições Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 3/ 105


Software livre

Um software é dito livre quando atende aos quatro tipos de liberdade


para os usuários:
Executar o programa, para qualquer propósito;
Estudar o software;
Redistribuir cópias do programa;
Modificar o programa e distribuir estas modificações.

Ou seja, programa precisa ser distribuı́do juntamente com o seu


código-fonte e sem restrições para que os usuários alterem e
redistribuam esse código. Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 4/ 105


Software gratuito

Software livre
6=
Software gratuito
Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 5/ 105


Conteúdo do Minicurso

1 Software Livre X Proprietário

2 Sistema Operacional

3 Linux: Um breve histórico

4 Por que (não) usar Linux?

5 Peças de um sistema Linux

6 Distribuições Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 6/ 105


Sistema Operacional

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 7/ 105


Exemplos

Microsoft Windows
Linux
UNIX
Apple Mac OS
Apple OS X

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 8/ 105


Conteúdo do Minicurso

1 Software Livre X Proprietário

2 Sistema Operacional

3 Linux: Um breve histórico

4 Por que (não) usar Linux?

5 Peças de um sistema Linux

6 Distribuições Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 9/ 105


Primeiros Sistemas Operacionais

Sistemas Operacionais costumavam ser totalmente ligados ao


hardware, compilados para um processador especı́fico.
Funcionamento fı́sico do processador aparecia no SO.
Exemplos:
General Motors NAA-I/O (para IBM 704)
IBM OS/360 (para IBM S/360)
IBM DOS/360 (para IBM S/360)
RT-11 (para PDP-11)
Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 10/ 105


Primeiros Sistemas Operacionais

Laboratório
Nacional de
Figura : IBM 704 Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 11/ 105


Primeiros Sistemas Operacionais

Laboratório
Figura : IBM S/360 Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 12/ 105


Primeiros Sistemas Operacionais

Laboratório
Nacional de
Figura : PDP-11 Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 13/ 105


UNIX

Em 1969, a AT&T Bell Labs lança o Sistema Operacional UNIX.


Apenas um pequeno núcleo compilado em linguagem de
máquina dependente do hardware (kernel);
Grande parte do sistema separada do núcleo, escrita em C;
Desenvolvimento de uma linguagem de programação para
criação de módulos (surge a linguagem C);
Sistema de arquivos padrão para todas as arquiteturas.

Laboratório
Época do surgimento dos primeiros computadores pessoais.
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 14/ 105


POSIX

Em 1988, o IEEE publica um padrão para elaboração de Sistemas


Operacionais chamado POSIX (Portable Operating System
Interface)

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 15/ 105


GNU/Linux

UNIX era proprietário (AT&T Bell Labs). Em 1991, Linus Torvalds


reescreve o núcleo (kernel) deste sistema e o lança sob o nome de
Linux com código fonte aberto (software livre).

Desde 1983, Richard Stallman possuı́a um projeto de lançar o


GNU, um Sistema Operacional totalmente livre. Já havia
desenvolvido grande parte dos módulos superiores, mas o núcleo -
chamado GNU Hurd - ainda estava bem atrasado.

Com o lançamento do kernel Linux, usuários juntaram os dois


projetos e lançaram o GNU/Linux. Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 16/ 105


GNU/Linux

(a) Richard Stallman (b) GNU

Laboratório
Nacional de
Computação
(c) Linus Torvalds (d) Tux Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 17/ 105


Fatias de mercado dos SO’s

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 18/ 105


Conteúdo do Minicurso

1 Software Livre X Proprietário

2 Sistema Operacional

3 Linux: Um breve histórico

4 Por que (não) usar Linux?

5 Peças de um sistema Linux

6 Distribuições Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 19/ 105


Vantagens

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 20/ 105


Vantagens

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 21/ 105


Desvantagens

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 22/ 105


Conteúdo do Minicurso

1 Software Livre X Proprietário

2 Sistema Operacional

3 Linux: Um breve histórico

4 Por que (não) usar Linux?

5 Peças de um sistema Linux

6 Distribuições Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 23/ 105


Peças de um sistema Linux

Diferente de sistemas proprietários, onde uma empresa desenvolve


todo o software, um sistema Linux é composto por vários
elementos desenvolvidos por toda a comunidade.
Linux Kernel
X Window System (X.Org)
X Display Manager
XDM (X Window Display Manager)
KDM (KDE Display Manager)
GDM (GNOME Display Manager)
LightDM
MDM
Ambiente de Trabalho Laboratório
Nacional de
Demais software para o usuário Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 24/ 105


X Display Manager

Laboratório
Nacional de
Figura : XDM
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 25/ 105


X Display Manager

Laboratório
Nacional de
Figura : KDM
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 26/ 105


X Display Manager

Laboratório
Nacional de
Figura : GDM
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 27/ 105


X Display Manager

Laboratório
Nacional de
Figura : LightDM
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 28/ 105


X Display Manager

Laboratório
Nacional de
Figura : MDM Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 29/ 105


Peças de um sistema Linux

Diferente de sistemas proprietários, onde uma empresa desenvolve


todo o software, um sistema Linux é composto por vários
elementos desenvolvidos por toda a comunidade.
Linux Kernel
X Window System (X.Org)
X Display Manager
Ambiente de Trabalho
GNOME
KDE
MATE
Cinnamon
Xfce Laboratório
LXDE Nacional de
Demais software para o usuário Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 30/ 105


Ambiente de Trabalho

Laboratório
Nacional de
Figura : Gnome Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 31/ 105


Ambiente de Trabalho

Laboratório
Nacional de
Figura : KDE Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 32/ 105


Ambiente de Trabalho

Laboratório
Figura : Cinnamon
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 33/ 105


Ambiente de Trabalho

Laboratório
Figura : MATE Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 34/ 105


Conteúdo do Minicurso

1 Software Livre X Proprietário

2 Sistema Operacional

3 Linux: Um breve histórico

4 Por que (não) usar Linux?

5 Peças de um sistema Linux

6 Distribuições Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 35/ 105


Distribuições
Como um sistema Linux é composto por vários módulos e todos
com opções código-aberto, é possı́vel montar um sistema conforme
sua preferência. Portanto, existem as chamadas distribuições de
Linux.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 36/ 105


Parte II

Introdução ao Bash

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 37/ 105


Conteúdo do Minicurso

7 Usuários e Grupos

8 Estrutura de Arquivos

9 Definição de Shell Script

10 Apresentação do Console Linux

11 Comandos de Linux Laboratório


Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 38/ 105


Usuários e Grupos

Em um Sistema Linux, a arquitetura de controle de acesso a


arquivos, diretórios e periféricos é baseada em Usuários e Grupos.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 39/ 105


Usuários e Grupos

Usuários podem estarem agrupados e cada grupo ter seus


respectivos acessos garantidos ou negados.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 40/ 105


Conteúdo do Minicurso

7 Usuários e Grupos

8 Estrutura de Arquivos

9 Definição de Shell Script

10 Apresentação do Console Linux

11 Comandos de Linux Laboratório


Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 41/ 105


Estrutura de Arquivos

Como na maioria dos Sistemas Operacionais, os aquivos são


estruturados em árvore.

Pasta raiz ou root


A raiz da estrutura de arquivos é representada pela pasta ”/”, cha-
mada pasta raiz ou root do sistema.

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 42/ 105


Estrutura de Arquivos

Dentro da pasta root temos diversas outras pastas:


bin Executáveis do sistema
boot Arquivos necessários na inicialização do computador
dev Dispositivos de hardware presentes
etc Arquivos de configuração dos programas instalados
home Pastas pessoais dos usuários
lib Bibliotecas do sistema
root Pasta pessoal do usuário root
media Outros dispositivos de armazenamento plugados:
CD, Pendrive, Cartões de Memória, etc...
Laboratório
No geral, os usuários limitados só tem privilégios de escrita dentro de
Nacional
de suas pastas pessoais. Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 43/ 105


Estrutura de Arquivos

O caminho completo de um diretório ou arquivo é dado pelo


caminho traçado na árvore desde a raiz até o mesmo, separados
por barras (”/”).

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 44/ 105


Conteúdo do Minicurso

7 Usuários e Grupos

8 Estrutura de Arquivos

9 Definição de Shell Script

10 Apresentação do Console Linux

11 Comandos de Linux Laboratório


Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 45/ 105


Definições

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 46/ 105


Definições

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 46/ 105


Definições

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 47/ 105


Caracterı́sticas de um Shell Script

Arquivo de texto puro (codificado UTF-8, por exemplo)


Utiliza-se a extensão .sh
Para se executar um Shell Script
No terminal do Linux, chamar o interpretador bash passando
como parâmetro o arquivo do script.
Ex:
bash meuscript.sh
Adicionar o seguinte código à primeira linha do script:
#!/bin/bash
E marcar o script como executável com
chmod +x meuscript.sh
(Este passo precisa ser feito apenas uma vez)
Após, o script pode ser executado chamando apenasLseu a bnome:
oratório
Nacional de
./meuscript.sh ou meuscript.sh Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 48/ 105


Conteúdo do Minicurso

7 Usuários e Grupos

8 Estrutura de Arquivos

9 Definição de Shell Script

10 Apresentação do Console Linux

11 Comandos de Linux Laboratório


Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 49/ 105


Console do Linux

Disponı́veis 6 terminais de modo texto pressionando CTRL +


ALT + F1 até F6
Para voltar às sessões gráficas pressione CTRL + ALT + F7
até F12

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 50/ 105


Console do Linux

Disponı́veis 6 terminais de modo texto pressionando CTRL +


ALT + F1 até F6
Para voltar às sessões gráficas pressione CTRL + ALT + F7
até F12
Consoles dentro da interface gráfica:
gnome-terminal do ambiente gŕafico GNOME
konsole do ambiente gráfico KDE
xterm
Editores de texto como o Kate já trazem um terminal em sua
interface para facilitar o desenvolvimento e debugging
Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 50/ 105


Console do Linux

Nos Ubuntu mais antigos, é possı́vel encontrar o


gnome-terminal no menu Aplicativos > Acessórios >
Terminal;

Ou então é possı́vel abrı́-lo usando a combinação de teclas


ALT + F2 e digitando gnome-terminal;

Ou usando o atalho CTRL + ALT + T.

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 51/ 105


Prompt de Comando

usuário@máquina:pasta$

usuário: Nome do usuário logado no momento


máquina: Nome do computador
pasta: Pasta atual onde os comandos serão executados, ou
onde os programas serão procurados. O sı́mbolo ˜ indica que
está na pasta home do usuário, normalmente /home/USUARIO
$: Indica que o comando executado terá privilégios normais.
Caso o prompt esteja com privilégios de superusuário, o
sı́mbolo se altera para #
Laboratório
Nacional de
Ex: daniel@E200:~$ Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 52/ 105


Redirecionadores

No console Linux é possı́vel redirecionar a saı́da de um comando


para um arquivo ou para outro comando, ou redirecionar o
conteúdo de um arquivo para a entrada de um comando

>: Redireciona a saı́da padrão para um arquivo (caso o


arquivo já exista, o conteúdo dele será apagado)
2 >: Redireciona a saı́da de erro para um arquivo (caso o
arquivo já exista, o conteúdo dele será apagado)
>>: Redireciona a saı́da padrão para um arquivo (caso o
arquivo já exista, será acrescentado no final)
2 >>: Redireciona a saı́da padrão para um arquivo (caso
L a b oor a t ó r i o
arquivo já exista, será acrescentado no final) Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 53/ 105


Redirecionadores

& >: Redireciona a saı́da padrão e a de erro para um arquivo


(caso o arquivo já exista, o conteúdo dele será apagado)
& >>: Redireciona a saı́da padrão e a de erro para um
arquivo (caso o arquivo já exista, será acrescentado no final)

l: Redireciona a saı́da de um comando para outro comando

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 54/ 105


Redirecionadores

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 55/ 105


Conteúdo do Minicurso

7 Usuários e Grupos

8 Estrutura de Arquivos

9 Definição de Shell Script

10 Apresentação do Console Linux

11 Comandos de Linux Laboratório


Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 56/ 105


cd

Altera o diretório de trabalho atual de acordo com o que for


passado como parâmetro

Caso seja informado como parâmetro apenas um nome, será


procurado um subdiretório dentro do atual para entrar nele
Caso o parâmetro se inicie com /, será buscado este diretório
na raiz do sistema
Caso o parâmetro seja .., o diretório será alterado para seu
prórpio pai (subir um nı́vel)
Da mesma forma se pode subir dois nı́veis com cd ../.., e
assim sucessivamente
Laboratório
Pode-se passar o parâmetro ˜ para ir para sua pasta Nacional
pessoal de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 57/ 105


cd

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 58/ 105


ls

Lista conteúdo do diretório atual.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 59/ 105


mkdir

Cria um novo diretório

Caso seja informado como parâmetro apenas um nome, será


criado um subdiretório dentro do atual
Caso o parâmetro se inicie com /, será criado um diretório na
raiz
Caso o parâmetro se inicie com ../, o diretório será criado
dentro do pai do atual
Da mesma forma se pode-se criar diretório dois nı́veis acima
com mkdir ../../nome, e assim sucessivamente
Caso o parâmtro se inicie com ˜/ o diretório será criado
Laboratório
dentro de sua pasta pessoal Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 60/ 105


mkdir

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 61/ 105


echo
Imprime o argumento na tela

Caso seja passado o parâmetro -e, o comando irá tratar


caracteres especiais como \ n, \ t entre outros.
Por padrão, após a impressão na tela uma linha é quebrada
automaticamente. Para evitar isto, passar o parâmetro -n.
Ex:
echo ” a b a c a t e maduro ”
a b a c a t e maduro
echo ” a b a c a t e \n maduro ”
a b a c a t e \n maduro
echo −e ” a b a c a t e \n maduro ” Laboratório
Nacional de
abacate Computação
maduro Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 62/ 105


cat

Mostra o conteúdo de um arquivo de texto na tela

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 63/ 105


head

Mostra as primeiras linhas de um arquivo de texto na tela

É possı́vel obter também os N primeiros bytes de um arquivo,


mas neste curso só nos interessa as N primeiras linhas.
É preciso passar a quantidade de linhas desejada pelo
parâmetro -nX, onde X é a quantidade de linhas desejada.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 64/ 105


tail

Mostra as últimas linhas de um arquivo de texto na tela

É possı́vel obter também os N últimos bytes de um arquivo,


mas neste curso só nos interessa as N últimas linhas.
É preciso passar a quantidade de linhas desejada pelo
parâmetro -nX, onde X é a quantidade de linhas desejada.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 65/ 105


tr
Substitui todas as ocorrências de uma string por outra

O arquivo ou frase de entrada precisa ser passado pelo


redirecionador l ou pelo <

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 66/ 105


sed
O comando tr não se comporta muito bem com strings de
tamanhos diferentes ou strings pequenas que apareçam no meio de
palavras;
Existe no bash o comando sed que, entre outras coisas, permite
fazer uma substituição mais eficiente.

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

Mostra as linhas de um arquivo ou da saı́da de um comando nas


quais é possı́vel encontrar uma certa string

Para procurar em um arquivo, passa-se o mesmo pela linha de


comando:
grep ” t r e c h o a s e r buscado ” a r q u i v o . t x t

Para se procurar na saı́da de um comando, utiliza-se o


redirecionador l:
l s − l a | g r e p ” termo ”
Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 68/ 105


su

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 #

Neste caso, a senha que é pedida é a senha do usuário root.


Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 69/ 105


sudo

Dá poder de superusuário ao usuário atual. Normalmente ativado


em instalações domésticas. O administrador da máquina deve listar
quais contas de usuário tem o privilégio de poder se tornar root.

daniel@E200 ˜ $ cat / etc / fuse . conf


c a t : / e t c / f u s e . c o n f : P e r m i s s a o negada

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 70/ 105


sudo

Laboratório
Nacional de
Figura : Via xkcd.com Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 71/ 105


Parte III

Introdução à Shell Script

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 72/ 105


Conteúdo do Minicurso

12 Estrutura básica de um script

13 Linha de comando, Condicionais e Repetição

14 Leitura e Escrita de Arquivos

15 Operações Aritméticas Básicas e Usando BC


Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 73/ 105


Estrutura básica de um script

Basicamente, um script é uma sequência de comandos do bash que


serão executados nesta ordem, separados por uma quebra de linha
ou um ponto-e-vı́rgula.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 74/ 105


Estrutura básica de um script

#! / 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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 75/ 105


Variáveis

Não há separação de variáveis por tipo no bash nem a necessidade


de declaração das variáveis anteriormente.

A definição de uma variável se dá em tempo de execução apenas


definindo seu valor como abaixo:
m i n h a s t r i n g=” Oi , eu s o u uma s t r i n g ”
m e u i n t e i r o =15

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 76/ 105


Variáveis

Para se acessar o conteúdo de uma variável se utiliza o sı́mbolo de


$ seguido do nome da mesma.

Ex:

nome=” D a n i e l ”
echo ” Ola $nome”
Ola D a n i e l

Para se alterar o valor de uma variável, basta novamente definı́-la


com o novo valor. Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 77/ 105


Variáveis

Para definir uma variável com o resultado de um comando,


utiliza-se, no lugar das aspas, acentos graves (`).

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 78/ 105


Variáveis

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 79/ 105


Variáveis

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 79/ 105


Conteúdo do Minicurso

12 Estrutura básica de um script

13 Linha de comando, Condicionais e Repetição

14 Leitura e Escrita de Arquivos

15 Operações Aritméticas Básicas e Usando BC


Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 80/ 105


If - Else

No bash, as estruturas de decisão e repetição são bem parecidas


com as demais linguagens, porém alguns detalhes devem ser
percebidos.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 81/ 105


If - Else

Existem diversos operadores booleanos que podem ser usados


numa instrução if:
==: Compara duas strings e retorna verdadeiro se forem
iguais
!=: Compara duas strings e retorna verdadeiro se forem
diferentes
-eq: Compara dois inteiros e retorna verdadeiro se forem iguais
-ne: Compara dois inteiros e retorna verdadeiro se forem
diferentes
-gt: Compara dois inteiros e retorna verdadeiro se o primeiro
for maior
Laboratório
Nacional de
-lt: Compara dois inteiros e retorna verdadeiro se o primeiro
for menor Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 82/ 105


If - Else

-ge: Compara dois inteiros e retorna verdadeiro se o primeiro


for maior ou igual
-le: Compara dois inteiros e retorna verdadeiro se o primeiro
for menor ou igual

-a: AND Logico: Retorna verdadeiro se as duas condições são


verdadeiras
-o: OR Logico: Retorna verdadeiro se pelo menos uma das
duas condições é verdadeira
Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 83/ 105


If - Else

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 84/ 105


If - Else
Atividade 3
Faça um script que pergunte um mês (número) para o usuário,
consulte o mês atual e informe se estamos ou não neste mês.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 85/ 105


If - Else

#! / b i n / b as h

echo ” D i g i t e um numero de mes : ”


r e a d mes
a t u a l =` d a t e +%m`

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 86/ 105


Linha de comando
Atividade 4
Altere o script anterior para que, ao invés do número do mês ser
perguntado ao usuário pelo read, ele seja recebido via parâmetro
de linha de comando.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 87/ 105


Linha de comando

#! / 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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 88/ 105


Linha de comando

Tente executar o script sem passar nenhum parâmtero. Não é este


o comportamento que queremos que ele tenha.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 89/ 105


Linha de comando

#! / 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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 90/ 105


Case

Caso a quantidade de testes a ser realizada seja muito grande, usar


uma estrutura como case pode vir a ajudar bastante.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 91/ 105


For

Usado para fazer um laço de repetição quando já se sabe antes a


quantidade de repetições a serem realizadas.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 92/ 105


For

Apesar de não aceitar diretamente valores inteiros como limites da


repetição, existe uma maneira de fazer um for parecido do a
estrutura da maioria das linguagens.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 93/ 105


For

#! / 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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 94/ 105


Conteúdo do Minicurso

12 Estrutura básica de um script

13 Linha de comando, Condicionais e Repetição

14 Leitura e Escrita de Arquivos

15 Operações Aritméticas Básicas e Usando BC


Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 95/ 105


Leitura de Arquivos

A leitura de arquivos no bash pode ser feita indiretamente pegando


a saı́da do comando cat. Este não é o único método, mas é
eficiente para arquivos de apenas uma linha.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 96/ 105


Leitura de Arquivos

#! / 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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 97/ 105


Escrita de Arquivos

A escrita de arquivos, por sua vez, é realizada simplesmente


redirecionando a saı́da do comando echo para um arquivo.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 98/ 105


Escrita de Arquivos

#! / 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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 99/ 105


Conteúdo do Minicurso

12 Estrutura básica de um script

13 Linha de comando, Condicionais e Repetição

14 Leitura e Escrita de Arquivos

15 Operações Aritméticas Básicas e Usando BC


Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 100/ 105


Aritmética Básica

Para operações simples e com números inteiros, pode-se utilizar o


comando expr passando como parâmetro a expressão a ser
realizada.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 101/ 105


Aritmética Básica

#! / 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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 102/ 105


Aritmética de Ponto Flutuante
Para operações mais complicadas, incluindo cálculos cientı́ficos
e/ou com números decimais, utiliza-se o bc - bash calculator. Sua
notação de uso é a seguinte:
r e s u l t a d o=$ ( echo ” s c a l e=X ; EXPRESSAO” | bc )
Onde X é a quantidade de casas decimais, e EXPRESSÃO é a
expressão matemática que se deseja calcular.

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

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 103/ 105


Aritmética de Ponto Flutuante

#! / b i n / b as h

echo ” E n t r e com o r a i o : ”
read r a i o

a r e a=$ ( echo ” s c a l e =2; 3 . 1 4 ∗ $ r a i o ˆ2 ” | bc )


comp=$ ( echo ” s c a l e =2; 2 ∗ 3 . 1 4 ∗ $ r a i o ” | bc )

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 (daniel@gaspar.ws) Introdução ao Linux e Shell Script 104/ 105


Introdução ao Linux e Shell Script

Daniel Gaspar Gonçalves de Souza

daniel@gaspar.ws

VII Encontro Acadêmico de Modelagem Computacional

Janeiro/2014

Laboratório
Nacional de
Computação
Científica

Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 105/ 105