SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
LTI/ICEx - UFMGLTI/ICEx - UFMG
Laboratório de Tecnologia da InformaçãoLaboratório de Tecnologia da Informação
Mini CursoMini Curso
Introdução ao Sistema OperacionalIntrodução ao Sistema Operacional
GNU/LinuxGNU/Linux
Alexandre Elias dos SantosAlexandre Elias dos Santos
aleniac@ufmg.braleniac@ufmg.br
Julho 2015Julho 2015
Sistemas OperacionaisSistemas Operacionais
 1945 - 1955 – Na primeira geração de
computadores, o controle era feito de forma manual
via hardware, não havia SOs (sistemas
operacionais);
 1955 - 1965 – Sistemas orientados por lotes (batch
systems) e uso de cartões perfurados;
 1965 - desenvolvimento do Multics, sistema
interativo com compartilhamento de tempo, por Ken
Thompson, Dennis Ritchie, Douglas McIlroy e Peter
Weine;
 Envolvidos no projeto do Multics: MIT
(Massachussets Institute of Technology), AT&T (Bell
Laboratories) e General Electric (GE).
Sistemas Operacionais UnixSistemas Operacionais Unix
 1969 - Thompson desenvolve o Unics
reescrevendo o Multics através de um
minicomputador PDP-7 em Assembler;
 1973, reimplementação do Unix em C
para um PDP-11 por Thompson e Richie;
 Alguns SOs da famíla Unix (*nix):
TSS/360 (da IBM), Mac OS X, Solaris,
BSD(Universidade de Berkeley), Xenix
(Microsoft), System III e System V (Bell
Labs).
 Outros sistemas operacionais
contemporâneos: CP/M, Apple DOS, MS
DOS.
Minicomputador PDP-11
Principais Características do UnixPrincipais Características do Unix
 Capacidade multitarefas - execução de diversas
tarefas simultâneas;
 Capacidade Multiusuário – possibilidade de vários
usuários utilizarem o mesmo computador ao mesmo
tempo;
 Transportabilidade – facilidade de transportar o
sistema para outras arquiteturas de computadores;
 Sistema orientado por arquivos - praticamente todos
elementos do computador é representado por
arquivos.
Projeto GNUProjeto GNU
 Sistema Operacional compatível com
Unix e totalmente livre (direito de uso,
modificação e redistribuição);
 GNU – Gnu is Not Unix;
 Criado em 1984 por Richard Stallman;
 Objetos iniciais do SO GNU:
compiladores de C, editores de texto,
etc;
 GPL – General Public License.
GNU GPLGNU GPL
(General Pubic License)(General Pubic License)
 A GPL se baseia em 4 termos:
1) liberdade de execução do programa para qualquer
propósito (liberdade # 0);
2) liberdade de estudar o funcionamento do programa e
adaptá-lo conforme suas necessidades (liberdade # 1);
3) liberdade de redistribuição de cópias (liberdade # 2);
4) liberdade de aperfeiçoar e redistribuir o programa
aperfeiçoado de modo que beneficie toda comunidade
(liberdade # 3).
⚠⚠ Acesso ao código fonte é um pré-requisito para as liberdades
#1 e #3.
Kernel de um Sistema OperacionalKernel de um Sistema Operacional
 Kernel, núcleo de um sistema operacional;
 Responsável pelo gerenciamento de recursos do sistema
(controle de processos, alocação de memória, entrada e saída
de dispositivos e outros);
 Linux, o Kernel de Linux Torvalds criado em 1991;
 GNU/Linux, o SO GNU com o kernel Linux.
Primeiras Distribuições LinuxPrimeiras Distribuições Linux
 No começo, a instalação básica do sistema partia
da compilação do kernel através do Minix.
 Boot/Root: conhecida como a primeira
distribuição do sistema pré-compilado, 1991.
 MCC Interim Linux: Sucessor do Boot/Root,
1992.
 SLS Linux: distribuição com muitos aplicativos em
modo texto, 1992.
 Yggdrasil: precursora do live-CD e com ambiente
gráfico, 1992.
Árvore de Distribuições LinuxÁrvore de Distribuições Linux
➔ Debian
➔ aLinux
➔ Knoppix
➔ Kurumin
➔ Ubuntu
➔ Mint
➔ Kunbuntu
➔ Xubuntu
➔ Gentoo (Linux?)
➔ Red Hat
➔ Mandrake
➔ Conectiva
➔ SuSE
➔ Fedora Core
➔ Libertas
➔ Slackware
➔ Slacx
➔ Vector Linux
} Mandriva
Representação ilustrativa da árvore de distribuições Linux.
Gerenciadores de JanelasGerenciadores de Janelas
 Servidor X:
➔ Desenvolvido em 1984 pelo MIT;
➔ Carrega a placa de vídeo, mouse e teclado;
➔ permite o uso de programas com bibliotecas
gráficas em sistemas Unix ou similares.
 Gerenciadores de janelas:
➔ Requesita serviços do servidor X;
➔ Permite operações com janelas, como, por
exemplo, mover, minimizar, maximizar e fechar
a janela;
➔ Múltiplas áreas de trabalho e desktop 3D.
KDEKDE
 KDE (K Desktop Enviroment):
➔ Interface gráfica que possui um visual bem atrativo, bastante
sedutora para usuários do Windows. O ambiente gráfico é
altamente intuitivo.
GnomeGnome
 GNOME (GNU Network Object Model Environment):
➔ Ambiente gráfico bastante amigável com diversos recursos,
além de ser altamente personalizável.
UnityUnity
 Unity:
➔ Interface gráfica padrão do Ubuntu, atualmente, muito
estilosa. O Unity é uma renovação do Gnome, contudo é
menos personalizável.
Compiz - Desktop 3DCompiz - Desktop 3D
 Compiz:
➔ Foi o primeiro desktop com efeitos tridimensionais. O Compiz
Fusion, projeto mais recente, permite visulização de mútiplas
áreas de trabalho em diversos formatos espaciais: cúbicos,
esféricos e outros.
Alguns ProgramasAlguns Programas
 Pacote de programas de escritório: Libre Office
(antigo Open Office).
 Multimídia: Audacious, VLC, Brasero.
 Compiladores: Gcc, G++, Gpc.
 Editores de textos: Kedit, Kate, leafpad.
 Editor/compilador de Latex: Kile.
 Acadêmicos: R, Scilab, Eclipse.
 Utilitários em modo texto: Vim, Links, Moc, Mutt.
 Gráfico: Gimp, Gthumb, Ristretto.
Uso de Console no LinuxUso de Console no Linux
 Console (terminal): interface em modo texto
que permite a interpretação de comandos
através de um shell.
 Shell: interpretador de comandos ou conjunto
de comandos (modo programado em Shell
Script).
 Tipos de Shell: Bash, Ash, Dash, Sh e outros.
Alguns ComandosAlguns Comandos
 ls listar o conteúdo do diretório
 rm remoção de arquivos/diretórios
 cd muda para um determinado diretório
 man mostra informações sobre um comando
 cat exibe o conteúdo de um arquivo na saída padrão
 less permite a visualização de arquivo de texto
 cp copia arquivos ou diretórios
 mkdir cria um diretório
 du -sh mostra o tamanho do diretório
 ps aux exibe todos processos que estão sendo executados
 top permite visualizar os recursos usados pelos processos
abertos.
Gerenciamento de ProcessosGerenciamento de Processos
 Um processo é a representação de um comando em
execução.
 Características específicas de um processo:
➢ PID – Identificador do Processo
➢ PPID – PID do processo pai
➢ Proprietário do processo
➢ Estado (em espera, em execução, etc)
➢ Prioridade de execução
➢ Recursos de Memória
 Visualização de todos processos em execução:
aleniac@terminal-frost:~$ ps aux
Gerenciamento de ProcessosGerenciamento de Processos
 Alguns sinais de um processo:
➢ STOP – usado para interromper um processo.
➢ CONT – para continuar um processo interrompido.
➢ SEGV – informa erros de endereço de memória.
➢ TERM – para terminar um processo.
➢ ILL – informa erros de instrução ilegal.
➢ KILL – para matar um processo.
 Fechando um processo com o comando kill:
:~$ kill -TERM pid do processo # nem sempre termina!
 Matando (todos) processos por nome:
:~$ killall -KILL firefox # mata mesmo todos firefox abertos!
Instalação de Pacotes/ProgramasInstalação de Pacotes/Programas
O que são os repositórios?
São servidores que disponibilizam pacotes para download.
Formas de instalaçao de programas:
 Via apt-get: a instalação de programas pode ser feita
usando o comando apt-get que obtém em repositórios
previamente reconhecidos pelo sistema os pacotes do
programa a serem instalados;
 Gerenciador de pacote (Synaptic): semelhante ao apt-
get, porém através de uma interface gráfica;
 Manual: através do código fonte pelos procedimentos
./configure; make; make install. Geralmente, são
programas que não estão nos repositórios.
Estrutura de Diretórios GNU/LinuxEstrutura de Diretórios GNU/Linux
Representação ilustrativa de diretórios e arquivos do sistema
de arquivos da distribuição Ubuntu.
Sistema de Arquivos e PartiçõesSistema de Arquivos e Partições
# / was on /dev/sda1 during installation
UUID=26a34652-710b-46c1-87d9-08aa186d4d3d / ext3 errors=remount-ro 0 1
# /media/dados was on /dev/sda5 during installation
UUID=0ab24c3b-f61f-4b85-b1bf-1da679331ead /home ext3 defaults 0 2
# swap was on /dev/sda2 during installation
UUID=cd5a32ed-e52f-4858-a210-fd2244095ae3 none swap sw 0 0
# /media/backup on /dev/sdb1
/dev/sdb1 /media/backupext3 defaults 0 2
# / was on /dev/sda1 during installation
UUID=26a34652-710b-46c1-87d9-08aa186d4d3d / ext3 errors=remount-ro 0 1
# /media/dados was on /dev/sda5 during installation
UUID=0ab24c3b-f61f-4b85-b1bf-1da679331ead /home ext3 defaults 0 2
# swap was on /dev/sda2 during installation
UUID=cd5a32ed-e52f-4858-a210-fd2244095ae3 none swap sw 0 0
# /media/backup on /dev/sdb1
/dev/sdb1 /media/backupext3 defaults 0 2
Arquivo /etc/fstab
Alguns Arquivos ImportantesAlguns Arquivos Importantes
 /etc/passwd – contém dados de contas dos usuários
 /etc/group – contém os grupos de usuários
 /etc/shadow – senhas criptografadas dos usuários
 /etc/fstab – tabela de sistema de arquivos
 /etc/crontab – tabela de agendamento de tarefas do cron
 /etc/fstab – tabela de sistema de arquivos
 /etc/apt/sources.list – lista de repositórios
 /etc/resolv.conf – contém endereços dos servidores de DNS
 /etc/network/interfaces – configurações de rede
 /etc/skel/ – arquivos básicos para home de novos usuários.
Especificação de RotasEspecificação de Rotas
Não se perca onde um comando é executado ou onde se
encontra um determinado arquivo ou diretório.
 O path é o caminho onde se encontra um determinado arquivo ou
diretório no sistema de arquivos.
 O path pode ser referenciado de duas formas: através da rota
absoluta, o caminho completo; ou através da rota relativa, isto é,
em relação ao diretório em uso por um shell.
 Exibindo o path em uso:
:~$ pwd # onde estou?
 Rota absoluta, exemplo:
:~$ ls /home/fulano/Documentos
 Rota relativa (parcial), exemplo:
:~$ ls Documentos
Utilizando Rotas Absolutas EUtilizando Rotas Absolutas E
RelativasRelativas
Retorne de
onde eu estava.
Em qual diretório
estou?
O que contém no meu
diretório pai?
O que tem no diretório
no qual estou?
O que contém em
Documentos?
O que contém no meu
diretório avô,
o diretório ”/”?
Vá para meu
diretório pai.
Exemplo de uso de rotas absolutas e relativas.
Montagem de Sistema de ArquivosMontagem de Sistema de Arquivos
Montando todos sistemas de arquivos incluídos em /etc/fstab:
Montando o dispositivo /dev/sda2 pré-definido em /etc/fstab:
Montando /dev/sda2 do tipo ntfs e não definido em /etc/fstab:
root@terminal-frost:~# mount -t ntfs /dev/sda2 /media/windowsxproot@terminal-frost:~# mount -t ntfs /dev/sda2 /media/windowsxp
root@terminal-frost:~# mount /dev/sda2root@terminal-frost:~# mount /dev/sda2
root@terminal-frost:~# mount -aroot@terminal-frost:~# mount -a
Dispositivo Local de montagem
Setando os bits xwr, exemplo:
Conversão binária para decimal:
usuário (xwr)
1*20
+ 1*21
+ 1*22
= 7
grupo (x-r)
1*20
+ 0*21
+ 1*22
= 5
outros (---)
0*20
+ 0*21
+ 0*22
= 0
Permissões de ArquivosPermissões de Arquivos
valor símbolos Permissão
0 --- nenhuma
1 --x execução
2 -w- escrita
3 -wx escrita e execução
4 r-- leitura
5 r-x leitura e execução
6 rw- leitura e escrita
7 rwx leitura, escrita e execução
aleniac@crisolita:~$ chmod 750 exemplo.txt; ls -l exemplo.txt
-rwxr-x--- 1 aleniac aleniac 562 Fev 20 11:12 exemplo.txt
aleniac@crisolita:~$ chmod 750 exemplo.txt; ls -l exemplo.txt
-rwxr-x--- 1 aleniac aleniac 562 Fev 20 11:12 exemplo.txt
Bit x w r octal
u 1 1 1 7
g 1 0 1 5
o 0 0 0 0
Encanamento de ComandosEncanamento de Comandos
Exemplo de uso do operador pipeline com o operador '|'.
Operadores de Redirecionamento deOperadores de Redirecionamento de
Entrada e Saída (Entrada e Saída (<<,, >> ee >>>>))
:~$ mutt -s ”Relatório” -a report.txt -- aleniac@ufmg.br
< mensagem.txt
:~$ mutt -s ”Relatório” -a report.txt -- aleniac@ufmg.br
< mensagem.txt
 Enviando email com o utilitário mutt usando como
mensagem o conteúdo de um arquivo:
:~$ echo ”Arquivos do meu diretório:” > report.txt
:~$ echo >> report.txt
:~$ ls -lh >> report.txt
:~$ echo ”Arquivos do meu diretório:” > report.txt
:~$ echo >> report.txt
:~$ ls -lh >> report.txt
 Redirecionando saída do ls para o arquivo através
de concatenação:
Sed – Editor de texto não interativoSed – Editor de texto não interativo
 O Sed facilita a automatição de tarefas que envolvem
processamento de textos.
 Forma geral do comando:
sed '[ endereço, [endereço ]] [!] comando [argumentos]'
Exemplos:
$ sed 's/aa/bb/g' file.txt # substitui todas ocorrências encontradas do
padrão 'aa' por 'bb' em toda as linhas.
$ sed '/GNU/d' file.txt # deleta somente linhas que contém GNU.
$ sed '/^BEGIN/,/END$/p' file.txt # imprime entre as linhas que
iniciam com BEGIN e terminam com END.
$ sed '/SELECT/!d' file.txt # apaga todas que NÃO contém SELECT.
$ sed '/BEGIN/,/END/!s/zip/zap/g' file.txt # substitui todas
ocorrências, exceto entre as linhas que contém BEGIN e END.
$ sed 's/aa/bb/g' file.txt # substitui todas ocorrências encontradas do
padrão 'aa' por 'bb' em toda as linhas.
$ sed '/GNU/d' file.txt # deleta somente linhas que contém GNU.
$ sed '/^BEGIN/,/END$/p' file.txt # imprime entre as linhas que
iniciam com BEGIN e terminam com END.
$ sed '/SELECT/!d' file.txt # apaga todas que NÃO contém SELECT.
$ sed '/BEGIN/,/END/!s/zip/zap/g' file.txt # substitui todas
ocorrências, exceto entre as linhas que contém BEGIN e END.
Metacaracteres e Expressões RegularesMetacaracteres e Expressões Regulares
 Metacaracteres: são caracteres com significado especial
dependendo do contexto;
 São usados em expressões regulares (regex) para localizar um
determinado padrão utilizando-se comandos como o sed, o grep e
o tr.
Padrão de
pesquisa
Expressão procurada
X*
gnu.linux
.*
[0-9]
[a-zA-Z]*
^GNU
Linux$
^.$
[[:alfnum:]]
[aeiou1-3]
x{n,m}
qualquer quantidade do caractere precendente, X, inclusive zero
qualquer tipo de caractere entre as palavras gnu e linux
zero ou mais caracteres de qualquer tipo
somente dígitos
zero ou mais caracteres alfabéticos
linhas cujo início seja a palavra GNU
linhas cujo final tenha a palavra Linux
linhas que contém apenas um caractere qualquer
caracteres alfanuméricos
vogais ou números 1 ou 2 ou 3
frequência de n a m do caractere precedente, x
Quadro com algumas expressões regulares.
Exemplos de Uso de MetacaracteresExemplos de Uso de Metacaracteres
aleniac@crisolita:~$ cat /etc/crontab | grep cron....ly
25 6 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
aleniac@crisolita:~$ cat /etc/crontab | grep cron....ly
25 6 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
aleniac@crisolita:~$ grep cron....ly /etc/crontab | sed 's/^[0-9]{1,2} [0-9]{1,2}/21 18/'
21 18 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
aleniac@crisolita:~$ grep cron....ly /etc/crontab | sed 's/^[0-9]{1,2} [0-9]{1,2}/21 18/'
21 18 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
 Busca linhas contendo a palavra cron seguida de 4
caracteres quaisquer mais a palavra ly:
 Exibe modificação da linha acima do arquivo do crontab
alterando o horário de execução da tarefa diária para às
18:21 horas:
⚠⚠ O significado literal do comando sed acima é: substitua as linhas que começam
com 1 ou 2 dígitos seguidos de espaço seguidos de 1 ou 2 dígitos por ”21 18”.
SSH - Acesso RemotoSSH - Acesso Remoto
 Acessando o computador remoto com o comando ssh:
 Copiando arquivo para um computador remoto com o
comando scp:
 Copiando arquivo do computador remoto para o local:
$ ssh -p 22 usuario@host_remoto$ ssh -p 22 usuario@host_remoto
$ scp -P 22 relatorio.txt usuario@host_remoto:~/$ scp -P 22 relatorio.txt usuario@host_remoto:~/
$ scp -P 22 usuario@host_remoto:~/lah.txt ./aqui.txt$ scp -P 22 usuario@host_remoto:~/lah.txt ./aqui.txt
●Final
Introdução à ProgramaçãoIntrodução à Programação
em Shell Bashem Shell Bash
Programação em Shell BashProgramação em Shell Bash
 Comando de saída, exemplo:
➔ $ echo ”Olá, Tux!”
 Comando de entrada, exemplo:
➔ $ read nome
 Criando variáveis:
➔ $ time=”Galo”
 Visualizando variáveis:
➔ $ echo $time
Variáveis de AmbienteVariáveis de Ambiente
 Variáveis de ambiente são variáveis utilizadas
pelo sistema, Exemplo:
➔ PATH – contém os possíveis caminhos(locais) de
comandos e programas executados no Shell;
➔ PWD – contém o endereço do diretório ativo;
➔ USER – armazena o nome do usuário.
 Visualizando uma variável de ambiente,
exemplo:
➔ $ echo $PATH
Criando um Shell ScriptCriando um Shell Script
 Passos para criar um Script Shell:
➔ Criar e salvar o arquivo contendo o código do
script utilizando um editor de texto de preferência;
➔ Mudar o modo do arquivo, tornando-o executável,
por exemplo:
$ chmod 755 meuscript
➔ Executar o script da seguinte forma:
$ ./meuscript
⚠⚠ O par de caracteres ”./” aponta para o diretório corrente em uso
no terminal.
Código em Shell ScriptCódigo em Shell Script
#!/bin/bash
# Buscando nome de arquivos através de uma
# palavra-chave (pode-se usar metacaracteres).
echo "Entre com a palavra chave:"
read chave # ler entrada
find ../ -name "$chave" # busca arquivo
echo "Terminei a busca." # exibe saida
#!/bin/bash
# Buscando nome de arquivos através de uma
# palavra-chave (pode-se usar metacaracteres).
echo "Entre com a palavra chave:"
read chave # ler entrada
find ../ -name "$chave" # busca arquivo
echo "Terminei a busca." # exibe saida
#!/bin/bash
# Meu primeiro script em Shell Bash
printf "Olá mundo!n"
#!/bin/bash
# Meu primeiro script em Shell Bash
printf "Olá mundo!n"
 Dois exemplos de código em Bash:
Teste de Expressões LógicasTeste de Expressões Lógicas
a=”GNU/Linux”
b=”Windows Microsoft”
[ ”$a” = ”$b” ]; echo $?
[ ”$a” != ”$b” ]; echo $?
a=”GNU/Linux”
b=”Windows Microsoft”
[ ”$a” = ”$b” ]; echo $?
[ ”$a” != ”$b” ]; echo $?
Expressões Lógicas Literais (strings):
⚠⚠ É um bom hábito usar as aspas duplas (”);
Deve-se deixar espaço entre a expressão de teste e os colchetes.
Teste de Expressões LógicasTeste de Expressões Lógicas
Operadores Lógicos para Expressões
Aritméticas:
➔ -eq (equal): igual;
➔ -ne (not-equal): diferente);
➔ -lt (less than): menor que (<);
➔ -le (less than or equal): menor ou igual ( <= );
➔ -gt (greater than): maior que (>);
➔ -ge (greater than or equal): maior ou igual (>=).
Teste de Expressões LógicasTeste de Expressões Lógicas
Expressões Lógicas numéricas, exemplo:
Expressão literal ou numérica?
⚠⚠ Note que o resultado da avaliação utilizando-se o operador ”=”
não necessariamente produz o mesmo utilizando-se ”-eq”.
valor1=-1; valor2=1
[ ”$valor1” -eq ”$valor2” ]; echo $?
valor1=-1; valor2=1
[ ”$valor1” -eq ”$valor2” ]; echo $?
x=002; y=2 # x e y são iguais?
[ ”$x” -eq ”$y” ]; echo $?
[ ”$x” = ”$y” ]; echo $?
x=002; y=2 # x e y são iguais?
[ ”$x” -eq ”$y” ]; echo $?
[ ”$x” = ”$y” ]; echo $?
Teste CondicionalTeste Condicional
Forma geral do comando if... then... else... fi:
if [ condição ]
then
...
comandos
...
else
...
comandos
...
fi
if [ condição ]
then
...
comandos
...
else
...
comandos
...
fi
Comando de Iteração WhileComando de Iteração While
Forma geral do comando while:
while [ condição ]
do
...
comandos
...
done
while [ condição ]
do
...
comandos
...
done
Comando de Iteração WhileComando de Iteração While
Exemplo do uso do while:
x=0 # valor inicial de x
while [ "$x" -lt 9 ]
do
echo ”linha: $x”
x=$(($x+1)) # x = x + 1
done
x=0 # valor inicial de x
while [ "$x" -lt 9 ]
do
echo ”linha: $x”
x=$(($x+1)) # x = x + 1
done
Comando de Iteração ForComando de Iteração For
Forma geral do comando for:
for <variável> in <v1 v2 v3 ... vn>
do
...
comandos
...
done
for <variável> in <v1 v2 v3 ... vn>
do
...
comandos
...
done
Comando de Iteração ForComando de Iteração For
Exemplos de uso do comando for:
# exibe uma sequência de 10 iterações
for i in $(seq 1 10)
do
echo ”iteração: $i”
done
# exibe uma sequência de 10 iterações
for i in $(seq 1 10)
do
echo ”iteração: $i”
done
# lista todos arquivos ”txt” no diretório corrrente
for x in *.txt
do
echo ”achei o arquivo $x”
done
# lista todos arquivos ”txt” no diretório corrrente
for x in *.txt
do
echo ”achei o arquivo $x”
done
Comando de Iteração ForComando de Iteração For
Exemplo de uso do for com vetores:
v=("one" "two" "three" "four") # vetor
cont=0 # contador
# v[@] são todos elementos de v
for x in ${v[@]}
do
echo ”conteúdo de v[$cont] = $x”
let cont++
done
v=("one" "two" "three" "four") # vetor
cont=0 # contador
# v[@] são todos elementos de v
for x in ${v[@]}
do
echo ”conteúdo de v[$cont] = $x”
let cont++
done
Filosofia UnixFilosofia Unix
 Escreva programas que façam
apenas uma coisa mas que façam
bem feito;
 Escreva programas que trabalhem
juntos;
 Escreva programas que manipulem
streams de texto, pois esta é uma
interface universal.
Ou, simplesmente: "faça apenas uma coisa e faça bem".
Filosofia UnixFilosofia Unix
KISS,KISS, keep it simple stupid!keep it simple stupid!
"Tudo deve ser feito da forma mais simples possível,"Tudo deve ser feito da forma mais simples possível,
mas não mais simples que isso."mas não mais simples que isso." (Albert Eistein)(Albert Eistein)
Tomoyasu Hotei - Battle Without Honor or HumanityTomoyasu Hotei - Battle Without Honor or Humanity
(Kill Bill Vol. 1 Soundtrack)(Kill Bill Vol. 1 Soundtrack)
ReferênciasReferências
 Introdução ao Shell Script, Aurélio Marinho Jargas
 Linux – O guia essencial, E. Siever, A.Weber, S. Figgins, R.
Love e A. Robbins
 O livro oficial do Ubuntu, Benjamin Mako Hill e outros
 Unix - Guia do Usuário, Rebecca Thomas
 wiki.forumdebian.com.br
 www.linuxnared.com.br
 www.guiadohardware.net
 www.vivaolinux.com.br
 www.vivaolinux.com.br/~aleniac
 http://pt.wikipedia.org/wiki/Unix
 http://www. inf.ufpr.br/afms03/shell3.html
 http://pt.wikipedia.org/wiki/LINUX_Guia_de_Comandos
 http://www.infowester.com/linprocessos.php

Más contenido relacionado

La actualidad más candente

Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)Luiz Arthur
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafTchelinux
 
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...Danilo Ricardo
 
Aula 3 - Sistemas operacionais - Linux
Aula 3 - Sistemas operacionais - LinuxAula 3 - Sistemas operacionais - Linux
Aula 3 - Sistemas operacionais - LinuxLucasMansueto
 
Produtividade & elegância com linux
Produtividade & elegância com linuxProdutividade & elegância com linux
Produtividade & elegância com linuxRalph Rassweiler
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básicoAdriano Melo
 
Gil - LiveCDs and Virtualisation, 2006
Gil - LiveCDs and Virtualisation, 2006Gil - LiveCDs and Virtualisation, 2006
Gil - LiveCDs and Virtualisation, 2006Luciano Rocha
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Marlon Willrich
 
Mini-curso de Linux na CPRecife2
Mini-curso de Linux na CPRecife2Mini-curso de Linux na CPRecife2
Mini-curso de Linux na CPRecife2Adriano Melo
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?Fabio Spanhol
 
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteTchelinux
 
Aula 2 Mini Curso de Linux
Aula 2 Mini Curso de LinuxAula 2 Mini Curso de Linux
Aula 2 Mini Curso de LinuxRogério Cardoso
 

La actualidad más candente (20)

Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)
 
Gentoo
GentooGentoo
Gentoo
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
 
Sistemas operacionais 01
Sistemas operacionais   01Sistemas operacionais   01
Sistemas operacionais 01
 
Sasha&Jorge Pereira
Sasha&Jorge PereiraSasha&Jorge Pereira
Sasha&Jorge Pereira
 
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...
Tutorial de instalação do PlayerStageGazebo no ubuntu linux 10.10 maverick me...
 
Aula 3 - Sistemas operacionais - Linux
Aula 3 - Sistemas operacionais - LinuxAula 3 - Sistemas operacionais - Linux
Aula 3 - Sistemas operacionais - Linux
 
Produtividade & elegância com linux
Produtividade & elegância com linuxProdutividade & elegância com linux
Produtividade & elegância com linux
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
 
Gil - LiveCDs and Virtualisation, 2006
Gil - LiveCDs and Virtualisation, 2006Gil - LiveCDs and Virtualisation, 2006
Gil - LiveCDs and Virtualisation, 2006
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
 
Mini-curso de Linux na CPRecife2
Mini-curso de Linux na CPRecife2Mini-curso de Linux na CPRecife2
Mini-curso de Linux na CPRecife2
 
Customizando Slackware
Customizando SlackwareCustomizando Slackware
Customizando Slackware
 
So-mod-4
So-mod-4So-mod-4
So-mod-4
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?
 
Linux
LinuxLinux
Linux
 
Linux para leigos
Linux para leigos Linux para leigos
Linux para leigos
 
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
 
Linux
LinuxLinux
Linux
 
Aula 2 Mini Curso de Linux
Aula 2 Mini Curso de LinuxAula 2 Mini Curso de Linux
Aula 2 Mini Curso de Linux
 

Similar a Minicurso GNU/Linux (20)

S.o iuras
S.o iurasS.o iuras
S.o iuras
 
Minicurso Linux
Minicurso Linux Minicurso Linux
Minicurso Linux
 
Sistema Operacional Android
Sistema Operacional AndroidSistema Operacional Android
Sistema Operacional Android
 
Aula de Informática Básica
Aula de Informática BásicaAula de Informática Básica
Aula de Informática Básica
 
Cygwin
CygwinCygwin
Cygwin
 
A.S.O 2 - Linux
A.S.O 2 - LinuxA.S.O 2 - Linux
A.S.O 2 - Linux
 
Sistemas_operacionais_1. KNOBUIBHBBHBHBH
Sistemas_operacionais_1. KNOBUIBHBBHBHBHSistemas_operacionais_1. KNOBUIBHBBHBHBH
Sistemas_operacionais_1. KNOBUIBHBBHBHBH
 
Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)
 
Resumo sistemas operativos - joao marques
Resumo   sistemas operativos - joao marquesResumo   sistemas operativos - joao marques
Resumo sistemas operativos - joao marques
 
1 - Introdução ao linux
1 - Introdução ao linux1 - Introdução ao linux
1 - Introdução ao linux
 
Lab so-abertos-unidade2
Lab so-abertos-unidade2Lab so-abertos-unidade2
Lab so-abertos-unidade2
 
Sistemas operacionais 5
Sistemas operacionais   5Sistemas operacionais   5
Sistemas operacionais 5
 
1309 apostila windows_xp
1309 apostila windows_xp1309 apostila windows_xp
1309 apostila windows_xp
 
Apostila Linux Educacional 3.0
Apostila Linux Educacional 3.0Apostila Linux Educacional 3.0
Apostila Linux Educacional 3.0
 
Apostila
ApostilaApostila
Apostila
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1
 
apresenta_linux_ceue
apresenta_linux_ceueapresenta_linux_ceue
apresenta_linux_ceue
 
Suse - GNU/Linux
Suse - GNU/LinuxSuse - GNU/Linux
Suse - GNU/Linux
 
Introdução ao GNU/Linux
Introdução ao GNU/LinuxIntrodução ao GNU/Linux
Introdução ao GNU/Linux
 

Minicurso GNU/Linux

  • 1. LTI/ICEx - UFMGLTI/ICEx - UFMG Laboratório de Tecnologia da InformaçãoLaboratório de Tecnologia da Informação Mini CursoMini Curso Introdução ao Sistema OperacionalIntrodução ao Sistema Operacional GNU/LinuxGNU/Linux Alexandre Elias dos SantosAlexandre Elias dos Santos aleniac@ufmg.braleniac@ufmg.br Julho 2015Julho 2015
  • 2. Sistemas OperacionaisSistemas Operacionais  1945 - 1955 – Na primeira geração de computadores, o controle era feito de forma manual via hardware, não havia SOs (sistemas operacionais);  1955 - 1965 – Sistemas orientados por lotes (batch systems) e uso de cartões perfurados;  1965 - desenvolvimento do Multics, sistema interativo com compartilhamento de tempo, por Ken Thompson, Dennis Ritchie, Douglas McIlroy e Peter Weine;  Envolvidos no projeto do Multics: MIT (Massachussets Institute of Technology), AT&T (Bell Laboratories) e General Electric (GE).
  • 3. Sistemas Operacionais UnixSistemas Operacionais Unix  1969 - Thompson desenvolve o Unics reescrevendo o Multics através de um minicomputador PDP-7 em Assembler;  1973, reimplementação do Unix em C para um PDP-11 por Thompson e Richie;  Alguns SOs da famíla Unix (*nix): TSS/360 (da IBM), Mac OS X, Solaris, BSD(Universidade de Berkeley), Xenix (Microsoft), System III e System V (Bell Labs).  Outros sistemas operacionais contemporâneos: CP/M, Apple DOS, MS DOS. Minicomputador PDP-11
  • 4. Principais Características do UnixPrincipais Características do Unix  Capacidade multitarefas - execução de diversas tarefas simultâneas;  Capacidade Multiusuário – possibilidade de vários usuários utilizarem o mesmo computador ao mesmo tempo;  Transportabilidade – facilidade de transportar o sistema para outras arquiteturas de computadores;  Sistema orientado por arquivos - praticamente todos elementos do computador é representado por arquivos.
  • 5. Projeto GNUProjeto GNU  Sistema Operacional compatível com Unix e totalmente livre (direito de uso, modificação e redistribuição);  GNU – Gnu is Not Unix;  Criado em 1984 por Richard Stallman;  Objetos iniciais do SO GNU: compiladores de C, editores de texto, etc;  GPL – General Public License.
  • 6. GNU GPLGNU GPL (General Pubic License)(General Pubic License)  A GPL se baseia em 4 termos: 1) liberdade de execução do programa para qualquer propósito (liberdade # 0); 2) liberdade de estudar o funcionamento do programa e adaptá-lo conforme suas necessidades (liberdade # 1); 3) liberdade de redistribuição de cópias (liberdade # 2); 4) liberdade de aperfeiçoar e redistribuir o programa aperfeiçoado de modo que beneficie toda comunidade (liberdade # 3). ⚠⚠ Acesso ao código fonte é um pré-requisito para as liberdades #1 e #3.
  • 7. Kernel de um Sistema OperacionalKernel de um Sistema Operacional  Kernel, núcleo de um sistema operacional;  Responsável pelo gerenciamento de recursos do sistema (controle de processos, alocação de memória, entrada e saída de dispositivos e outros);  Linux, o Kernel de Linux Torvalds criado em 1991;  GNU/Linux, o SO GNU com o kernel Linux.
  • 8. Primeiras Distribuições LinuxPrimeiras Distribuições Linux  No começo, a instalação básica do sistema partia da compilação do kernel através do Minix.  Boot/Root: conhecida como a primeira distribuição do sistema pré-compilado, 1991.  MCC Interim Linux: Sucessor do Boot/Root, 1992.  SLS Linux: distribuição com muitos aplicativos em modo texto, 1992.  Yggdrasil: precursora do live-CD e com ambiente gráfico, 1992.
  • 9. Árvore de Distribuições LinuxÁrvore de Distribuições Linux ➔ Debian ➔ aLinux ➔ Knoppix ➔ Kurumin ➔ Ubuntu ➔ Mint ➔ Kunbuntu ➔ Xubuntu ➔ Gentoo (Linux?) ➔ Red Hat ➔ Mandrake ➔ Conectiva ➔ SuSE ➔ Fedora Core ➔ Libertas ➔ Slackware ➔ Slacx ➔ Vector Linux } Mandriva Representação ilustrativa da árvore de distribuições Linux.
  • 10. Gerenciadores de JanelasGerenciadores de Janelas  Servidor X: ➔ Desenvolvido em 1984 pelo MIT; ➔ Carrega a placa de vídeo, mouse e teclado; ➔ permite o uso de programas com bibliotecas gráficas em sistemas Unix ou similares.  Gerenciadores de janelas: ➔ Requesita serviços do servidor X; ➔ Permite operações com janelas, como, por exemplo, mover, minimizar, maximizar e fechar a janela; ➔ Múltiplas áreas de trabalho e desktop 3D.
  • 11. KDEKDE  KDE (K Desktop Enviroment): ➔ Interface gráfica que possui um visual bem atrativo, bastante sedutora para usuários do Windows. O ambiente gráfico é altamente intuitivo.
  • 12. GnomeGnome  GNOME (GNU Network Object Model Environment): ➔ Ambiente gráfico bastante amigável com diversos recursos, além de ser altamente personalizável.
  • 13. UnityUnity  Unity: ➔ Interface gráfica padrão do Ubuntu, atualmente, muito estilosa. O Unity é uma renovação do Gnome, contudo é menos personalizável.
  • 14. Compiz - Desktop 3DCompiz - Desktop 3D  Compiz: ➔ Foi o primeiro desktop com efeitos tridimensionais. O Compiz Fusion, projeto mais recente, permite visulização de mútiplas áreas de trabalho em diversos formatos espaciais: cúbicos, esféricos e outros.
  • 15. Alguns ProgramasAlguns Programas  Pacote de programas de escritório: Libre Office (antigo Open Office).  Multimídia: Audacious, VLC, Brasero.  Compiladores: Gcc, G++, Gpc.  Editores de textos: Kedit, Kate, leafpad.  Editor/compilador de Latex: Kile.  Acadêmicos: R, Scilab, Eclipse.  Utilitários em modo texto: Vim, Links, Moc, Mutt.  Gráfico: Gimp, Gthumb, Ristretto.
  • 16. Uso de Console no LinuxUso de Console no Linux  Console (terminal): interface em modo texto que permite a interpretação de comandos através de um shell.  Shell: interpretador de comandos ou conjunto de comandos (modo programado em Shell Script).  Tipos de Shell: Bash, Ash, Dash, Sh e outros.
  • 17. Alguns ComandosAlguns Comandos  ls listar o conteúdo do diretório  rm remoção de arquivos/diretórios  cd muda para um determinado diretório  man mostra informações sobre um comando  cat exibe o conteúdo de um arquivo na saída padrão  less permite a visualização de arquivo de texto  cp copia arquivos ou diretórios  mkdir cria um diretório  du -sh mostra o tamanho do diretório  ps aux exibe todos processos que estão sendo executados  top permite visualizar os recursos usados pelos processos abertos.
  • 18. Gerenciamento de ProcessosGerenciamento de Processos  Um processo é a representação de um comando em execução.  Características específicas de um processo: ➢ PID – Identificador do Processo ➢ PPID – PID do processo pai ➢ Proprietário do processo ➢ Estado (em espera, em execução, etc) ➢ Prioridade de execução ➢ Recursos de Memória  Visualização de todos processos em execução: aleniac@terminal-frost:~$ ps aux
  • 19. Gerenciamento de ProcessosGerenciamento de Processos  Alguns sinais de um processo: ➢ STOP – usado para interromper um processo. ➢ CONT – para continuar um processo interrompido. ➢ SEGV – informa erros de endereço de memória. ➢ TERM – para terminar um processo. ➢ ILL – informa erros de instrução ilegal. ➢ KILL – para matar um processo.  Fechando um processo com o comando kill: :~$ kill -TERM pid do processo # nem sempre termina!  Matando (todos) processos por nome: :~$ killall -KILL firefox # mata mesmo todos firefox abertos!
  • 20. Instalação de Pacotes/ProgramasInstalação de Pacotes/Programas O que são os repositórios? São servidores que disponibilizam pacotes para download. Formas de instalaçao de programas:  Via apt-get: a instalação de programas pode ser feita usando o comando apt-get que obtém em repositórios previamente reconhecidos pelo sistema os pacotes do programa a serem instalados;  Gerenciador de pacote (Synaptic): semelhante ao apt- get, porém através de uma interface gráfica;  Manual: através do código fonte pelos procedimentos ./configure; make; make install. Geralmente, são programas que não estão nos repositórios.
  • 21. Estrutura de Diretórios GNU/LinuxEstrutura de Diretórios GNU/Linux Representação ilustrativa de diretórios e arquivos do sistema de arquivos da distribuição Ubuntu.
  • 22. Sistema de Arquivos e PartiçõesSistema de Arquivos e Partições # / was on /dev/sda1 during installation UUID=26a34652-710b-46c1-87d9-08aa186d4d3d / ext3 errors=remount-ro 0 1 # /media/dados was on /dev/sda5 during installation UUID=0ab24c3b-f61f-4b85-b1bf-1da679331ead /home ext3 defaults 0 2 # swap was on /dev/sda2 during installation UUID=cd5a32ed-e52f-4858-a210-fd2244095ae3 none swap sw 0 0 # /media/backup on /dev/sdb1 /dev/sdb1 /media/backupext3 defaults 0 2 # / was on /dev/sda1 during installation UUID=26a34652-710b-46c1-87d9-08aa186d4d3d / ext3 errors=remount-ro 0 1 # /media/dados was on /dev/sda5 during installation UUID=0ab24c3b-f61f-4b85-b1bf-1da679331ead /home ext3 defaults 0 2 # swap was on /dev/sda2 during installation UUID=cd5a32ed-e52f-4858-a210-fd2244095ae3 none swap sw 0 0 # /media/backup on /dev/sdb1 /dev/sdb1 /media/backupext3 defaults 0 2 Arquivo /etc/fstab
  • 23. Alguns Arquivos ImportantesAlguns Arquivos Importantes  /etc/passwd – contém dados de contas dos usuários  /etc/group – contém os grupos de usuários  /etc/shadow – senhas criptografadas dos usuários  /etc/fstab – tabela de sistema de arquivos  /etc/crontab – tabela de agendamento de tarefas do cron  /etc/fstab – tabela de sistema de arquivos  /etc/apt/sources.list – lista de repositórios  /etc/resolv.conf – contém endereços dos servidores de DNS  /etc/network/interfaces – configurações de rede  /etc/skel/ – arquivos básicos para home de novos usuários.
  • 24. Especificação de RotasEspecificação de Rotas Não se perca onde um comando é executado ou onde se encontra um determinado arquivo ou diretório.  O path é o caminho onde se encontra um determinado arquivo ou diretório no sistema de arquivos.  O path pode ser referenciado de duas formas: através da rota absoluta, o caminho completo; ou através da rota relativa, isto é, em relação ao diretório em uso por um shell.  Exibindo o path em uso: :~$ pwd # onde estou?  Rota absoluta, exemplo: :~$ ls /home/fulano/Documentos  Rota relativa (parcial), exemplo: :~$ ls Documentos
  • 25. Utilizando Rotas Absolutas EUtilizando Rotas Absolutas E RelativasRelativas Retorne de onde eu estava. Em qual diretório estou? O que contém no meu diretório pai? O que tem no diretório no qual estou? O que contém em Documentos? O que contém no meu diretório avô, o diretório ”/”? Vá para meu diretório pai. Exemplo de uso de rotas absolutas e relativas.
  • 26. Montagem de Sistema de ArquivosMontagem de Sistema de Arquivos Montando todos sistemas de arquivos incluídos em /etc/fstab: Montando o dispositivo /dev/sda2 pré-definido em /etc/fstab: Montando /dev/sda2 do tipo ntfs e não definido em /etc/fstab: root@terminal-frost:~# mount -t ntfs /dev/sda2 /media/windowsxproot@terminal-frost:~# mount -t ntfs /dev/sda2 /media/windowsxp root@terminal-frost:~# mount /dev/sda2root@terminal-frost:~# mount /dev/sda2 root@terminal-frost:~# mount -aroot@terminal-frost:~# mount -a Dispositivo Local de montagem
  • 27. Setando os bits xwr, exemplo: Conversão binária para decimal: usuário (xwr) 1*20 + 1*21 + 1*22 = 7 grupo (x-r) 1*20 + 0*21 + 1*22 = 5 outros (---) 0*20 + 0*21 + 0*22 = 0 Permissões de ArquivosPermissões de Arquivos valor símbolos Permissão 0 --- nenhuma 1 --x execução 2 -w- escrita 3 -wx escrita e execução 4 r-- leitura 5 r-x leitura e execução 6 rw- leitura e escrita 7 rwx leitura, escrita e execução aleniac@crisolita:~$ chmod 750 exemplo.txt; ls -l exemplo.txt -rwxr-x--- 1 aleniac aleniac 562 Fev 20 11:12 exemplo.txt aleniac@crisolita:~$ chmod 750 exemplo.txt; ls -l exemplo.txt -rwxr-x--- 1 aleniac aleniac 562 Fev 20 11:12 exemplo.txt Bit x w r octal u 1 1 1 7 g 1 0 1 5 o 0 0 0 0
  • 28. Encanamento de ComandosEncanamento de Comandos Exemplo de uso do operador pipeline com o operador '|'.
  • 29. Operadores de Redirecionamento deOperadores de Redirecionamento de Entrada e Saída (Entrada e Saída (<<,, >> ee >>>>)) :~$ mutt -s ”Relatório” -a report.txt -- aleniac@ufmg.br < mensagem.txt :~$ mutt -s ”Relatório” -a report.txt -- aleniac@ufmg.br < mensagem.txt  Enviando email com o utilitário mutt usando como mensagem o conteúdo de um arquivo: :~$ echo ”Arquivos do meu diretório:” > report.txt :~$ echo >> report.txt :~$ ls -lh >> report.txt :~$ echo ”Arquivos do meu diretório:” > report.txt :~$ echo >> report.txt :~$ ls -lh >> report.txt  Redirecionando saída do ls para o arquivo através de concatenação:
  • 30. Sed – Editor de texto não interativoSed – Editor de texto não interativo  O Sed facilita a automatição de tarefas que envolvem processamento de textos.  Forma geral do comando: sed '[ endereço, [endereço ]] [!] comando [argumentos]' Exemplos: $ sed 's/aa/bb/g' file.txt # substitui todas ocorrências encontradas do padrão 'aa' por 'bb' em toda as linhas. $ sed '/GNU/d' file.txt # deleta somente linhas que contém GNU. $ sed '/^BEGIN/,/END$/p' file.txt # imprime entre as linhas que iniciam com BEGIN e terminam com END. $ sed '/SELECT/!d' file.txt # apaga todas que NÃO contém SELECT. $ sed '/BEGIN/,/END/!s/zip/zap/g' file.txt # substitui todas ocorrências, exceto entre as linhas que contém BEGIN e END. $ sed 's/aa/bb/g' file.txt # substitui todas ocorrências encontradas do padrão 'aa' por 'bb' em toda as linhas. $ sed '/GNU/d' file.txt # deleta somente linhas que contém GNU. $ sed '/^BEGIN/,/END$/p' file.txt # imprime entre as linhas que iniciam com BEGIN e terminam com END. $ sed '/SELECT/!d' file.txt # apaga todas que NÃO contém SELECT. $ sed '/BEGIN/,/END/!s/zip/zap/g' file.txt # substitui todas ocorrências, exceto entre as linhas que contém BEGIN e END.
  • 31. Metacaracteres e Expressões RegularesMetacaracteres e Expressões Regulares  Metacaracteres: são caracteres com significado especial dependendo do contexto;  São usados em expressões regulares (regex) para localizar um determinado padrão utilizando-se comandos como o sed, o grep e o tr. Padrão de pesquisa Expressão procurada X* gnu.linux .* [0-9] [a-zA-Z]* ^GNU Linux$ ^.$ [[:alfnum:]] [aeiou1-3] x{n,m} qualquer quantidade do caractere precendente, X, inclusive zero qualquer tipo de caractere entre as palavras gnu e linux zero ou mais caracteres de qualquer tipo somente dígitos zero ou mais caracteres alfabéticos linhas cujo início seja a palavra GNU linhas cujo final tenha a palavra Linux linhas que contém apenas um caractere qualquer caracteres alfanuméricos vogais ou números 1 ou 2 ou 3 frequência de n a m do caractere precedente, x Quadro com algumas expressões regulares.
  • 32. Exemplos de Uso de MetacaracteresExemplos de Uso de Metacaracteres aleniac@crisolita:~$ cat /etc/crontab | grep cron....ly 25 6 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) aleniac@crisolita:~$ cat /etc/crontab | grep cron....ly 25 6 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) aleniac@crisolita:~$ grep cron....ly /etc/crontab | sed 's/^[0-9]{1,2} [0-9]{1,2}/21 18/' 21 18 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) aleniac@crisolita:~$ grep cron....ly /etc/crontab | sed 's/^[0-9]{1,2} [0-9]{1,2}/21 18/' 21 18 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )  Busca linhas contendo a palavra cron seguida de 4 caracteres quaisquer mais a palavra ly:  Exibe modificação da linha acima do arquivo do crontab alterando o horário de execução da tarefa diária para às 18:21 horas: ⚠⚠ O significado literal do comando sed acima é: substitua as linhas que começam com 1 ou 2 dígitos seguidos de espaço seguidos de 1 ou 2 dígitos por ”21 18”.
  • 33. SSH - Acesso RemotoSSH - Acesso Remoto  Acessando o computador remoto com o comando ssh:  Copiando arquivo para um computador remoto com o comando scp:  Copiando arquivo do computador remoto para o local: $ ssh -p 22 usuario@host_remoto$ ssh -p 22 usuario@host_remoto $ scp -P 22 relatorio.txt usuario@host_remoto:~/$ scp -P 22 relatorio.txt usuario@host_remoto:~/ $ scp -P 22 usuario@host_remoto:~/lah.txt ./aqui.txt$ scp -P 22 usuario@host_remoto:~/lah.txt ./aqui.txt ●Final
  • 34. Introdução à ProgramaçãoIntrodução à Programação em Shell Bashem Shell Bash
  • 35. Programação em Shell BashProgramação em Shell Bash  Comando de saída, exemplo: ➔ $ echo ”Olá, Tux!”  Comando de entrada, exemplo: ➔ $ read nome  Criando variáveis: ➔ $ time=”Galo”  Visualizando variáveis: ➔ $ echo $time
  • 36. Variáveis de AmbienteVariáveis de Ambiente  Variáveis de ambiente são variáveis utilizadas pelo sistema, Exemplo: ➔ PATH – contém os possíveis caminhos(locais) de comandos e programas executados no Shell; ➔ PWD – contém o endereço do diretório ativo; ➔ USER – armazena o nome do usuário.  Visualizando uma variável de ambiente, exemplo: ➔ $ echo $PATH
  • 37. Criando um Shell ScriptCriando um Shell Script  Passos para criar um Script Shell: ➔ Criar e salvar o arquivo contendo o código do script utilizando um editor de texto de preferência; ➔ Mudar o modo do arquivo, tornando-o executável, por exemplo: $ chmod 755 meuscript ➔ Executar o script da seguinte forma: $ ./meuscript ⚠⚠ O par de caracteres ”./” aponta para o diretório corrente em uso no terminal.
  • 38. Código em Shell ScriptCódigo em Shell Script #!/bin/bash # Buscando nome de arquivos através de uma # palavra-chave (pode-se usar metacaracteres). echo "Entre com a palavra chave:" read chave # ler entrada find ../ -name "$chave" # busca arquivo echo "Terminei a busca." # exibe saida #!/bin/bash # Buscando nome de arquivos através de uma # palavra-chave (pode-se usar metacaracteres). echo "Entre com a palavra chave:" read chave # ler entrada find ../ -name "$chave" # busca arquivo echo "Terminei a busca." # exibe saida #!/bin/bash # Meu primeiro script em Shell Bash printf "Olá mundo!n" #!/bin/bash # Meu primeiro script em Shell Bash printf "Olá mundo!n"  Dois exemplos de código em Bash:
  • 39. Teste de Expressões LógicasTeste de Expressões Lógicas a=”GNU/Linux” b=”Windows Microsoft” [ ”$a” = ”$b” ]; echo $? [ ”$a” != ”$b” ]; echo $? a=”GNU/Linux” b=”Windows Microsoft” [ ”$a” = ”$b” ]; echo $? [ ”$a” != ”$b” ]; echo $? Expressões Lógicas Literais (strings): ⚠⚠ É um bom hábito usar as aspas duplas (”); Deve-se deixar espaço entre a expressão de teste e os colchetes.
  • 40. Teste de Expressões LógicasTeste de Expressões Lógicas Operadores Lógicos para Expressões Aritméticas: ➔ -eq (equal): igual; ➔ -ne (not-equal): diferente); ➔ -lt (less than): menor que (<); ➔ -le (less than or equal): menor ou igual ( <= ); ➔ -gt (greater than): maior que (>); ➔ -ge (greater than or equal): maior ou igual (>=).
  • 41. Teste de Expressões LógicasTeste de Expressões Lógicas Expressões Lógicas numéricas, exemplo: Expressão literal ou numérica? ⚠⚠ Note que o resultado da avaliação utilizando-se o operador ”=” não necessariamente produz o mesmo utilizando-se ”-eq”. valor1=-1; valor2=1 [ ”$valor1” -eq ”$valor2” ]; echo $? valor1=-1; valor2=1 [ ”$valor1” -eq ”$valor2” ]; echo $? x=002; y=2 # x e y são iguais? [ ”$x” -eq ”$y” ]; echo $? [ ”$x” = ”$y” ]; echo $? x=002; y=2 # x e y são iguais? [ ”$x” -eq ”$y” ]; echo $? [ ”$x” = ”$y” ]; echo $?
  • 42. Teste CondicionalTeste Condicional Forma geral do comando if... then... else... fi: if [ condição ] then ... comandos ... else ... comandos ... fi if [ condição ] then ... comandos ... else ... comandos ... fi
  • 43. Comando de Iteração WhileComando de Iteração While Forma geral do comando while: while [ condição ] do ... comandos ... done while [ condição ] do ... comandos ... done
  • 44. Comando de Iteração WhileComando de Iteração While Exemplo do uso do while: x=0 # valor inicial de x while [ "$x" -lt 9 ] do echo ”linha: $x” x=$(($x+1)) # x = x + 1 done x=0 # valor inicial de x while [ "$x" -lt 9 ] do echo ”linha: $x” x=$(($x+1)) # x = x + 1 done
  • 45. Comando de Iteração ForComando de Iteração For Forma geral do comando for: for <variável> in <v1 v2 v3 ... vn> do ... comandos ... done for <variável> in <v1 v2 v3 ... vn> do ... comandos ... done
  • 46. Comando de Iteração ForComando de Iteração For Exemplos de uso do comando for: # exibe uma sequência de 10 iterações for i in $(seq 1 10) do echo ”iteração: $i” done # exibe uma sequência de 10 iterações for i in $(seq 1 10) do echo ”iteração: $i” done # lista todos arquivos ”txt” no diretório corrrente for x in *.txt do echo ”achei o arquivo $x” done # lista todos arquivos ”txt” no diretório corrrente for x in *.txt do echo ”achei o arquivo $x” done
  • 47. Comando de Iteração ForComando de Iteração For Exemplo de uso do for com vetores: v=("one" "two" "three" "four") # vetor cont=0 # contador # v[@] são todos elementos de v for x in ${v[@]} do echo ”conteúdo de v[$cont] = $x” let cont++ done v=("one" "two" "three" "four") # vetor cont=0 # contador # v[@] são todos elementos de v for x in ${v[@]} do echo ”conteúdo de v[$cont] = $x” let cont++ done
  • 48. Filosofia UnixFilosofia Unix  Escreva programas que façam apenas uma coisa mas que façam bem feito;  Escreva programas que trabalhem juntos;  Escreva programas que manipulem streams de texto, pois esta é uma interface universal. Ou, simplesmente: "faça apenas uma coisa e faça bem".
  • 49. Filosofia UnixFilosofia Unix KISS,KISS, keep it simple stupid!keep it simple stupid! "Tudo deve ser feito da forma mais simples possível,"Tudo deve ser feito da forma mais simples possível, mas não mais simples que isso."mas não mais simples que isso." (Albert Eistein)(Albert Eistein) Tomoyasu Hotei - Battle Without Honor or HumanityTomoyasu Hotei - Battle Without Honor or Humanity (Kill Bill Vol. 1 Soundtrack)(Kill Bill Vol. 1 Soundtrack)
  • 50. ReferênciasReferências  Introdução ao Shell Script, Aurélio Marinho Jargas  Linux – O guia essencial, E. Siever, A.Weber, S. Figgins, R. Love e A. Robbins  O livro oficial do Ubuntu, Benjamin Mako Hill e outros  Unix - Guia do Usuário, Rebecca Thomas  wiki.forumdebian.com.br  www.linuxnared.com.br  www.guiadohardware.net  www.vivaolinux.com.br  www.vivaolinux.com.br/~aleniac  http://pt.wikipedia.org/wiki/Unix  http://www. inf.ufpr.br/afms03/shell3.html  http://pt.wikipedia.org/wiki/LINUX_Guia_de_Comandos  http://www.infowester.com/linprocessos.php