Este documento apresenta um minicurso introdutório ao sistema operacional Linux. O minicurso aborda conceitos básicos do Linux, como distribuições, ambientes gráficos e estrutura de diretórios. Além disso, ensina sobre instalação de pacotes, shell scripting, administração do sistema e configuração de rede através da resolução de problemas.
2. 2
Objetivos deste Minicurso
● Aprender os conceitos básicos relacionados ao
Linux
● Aprender como utilizar o sistema
– Abordagem Problema → solução
● Obs: a instalação não será abordada neste minicurso.
3. 3
Roteiro
● Introdução ao Linux e às suas distribuições
– Histórico e Características
– Ambiente Gráfico
– Instalação de Pacotes e Utilitários
● Shell Scripting
– Introdução
– Administração do Sistema
– Configuração de Rede
4. 4
Material Base & Referências
● Apostilas de Linux
– http://paginapessoal.utfpr.edu.br/alexandregiron/paginapesso
al/fundamentos-de-sistemas-operacionais-2015-2-tsi
● Livros
– Artigo: “20 Melhores Livros”
https://edersg.wordpress.com/2014/06/18/os-20-melhores-ebook
s-gratuitos-sobre-o-gnu-linux/
● Lista de Comandos (A a Z):
– http://paginapessoal.utfpr.edu.br/alexandregiron/paginapesso
al/fundamentos-de-sistemas-operacionais-2015-2-tsi/commandos
_terminal.txt/view
6. 6
Linux – O básico
● O que é?
– Termo usado em contextos diferentes:
● Sistema Operacional (SO)
● Kernel: núcleo de um SO.
● A rigor, o Linux é um Kernel
– Compatível com sistema Unix
– Criado por Linus Torvalds em 1991
7. 7
Linux – O básico
● História
– 1984: Richard Stallman iniciou o
projeto GNU (GNU is Not Unix)
● Fomentar o uso de Software Livre
– 1985: Free Software Foundation
– 1991: GNU/Linux
● Kernel Linux + Softwares e Utilitários
8. 8
Distribuições
● Cada distribuição tem característica própria
– Pacotes de software: Editores, planilhas, bancos de dados,
navegadores, etc.
● Exemplos
– Ubuntu
– Xubuntu
– Debian
– Slackware
– RedHat
– Fedora
– Linux Mint
– Entre outros!
10. 10
Distribuições: Qual escolher?
● Escolha depende do objetivo da distribuição
● Alguns exemplos:
– Ubuntu:
● Interação com o usuário: mais recomendada para usuários que não
conhecem Linux
● Ambiente Unity
● Ubuntu GNOME: ambiente GNOME para Ubuntu
– Xubuntu
● Ambiente Xfce
– RedHat
● Foco no ambiente corporativo: versões para desktop e para servidores de
aplicações
– Fedora, Kubuntu
● Interação com usuário
● Ambiente KDE
14. 14
Ambiente Gráfico
● Ambiente KDE
● Tecnologias utilizadas
– Arch Linux
– Plasma Desktop: área de trabalho
– Qt: desenvolvimento de softwares para o KDE
● KDE Applications
– KHTML
● Engine HTML desenvolvido para o KDE
– Phonon
● API para aplicações multimídia
15. 15
Estrutura do SO
● Sistema Operacional como intermediário entre
Hardware-Software
Shell
Hardware
Kernel
Firmware
Aplicativos de Usuário
17. 17
Aplicativos de Usuário –
migrando
Descrição Programas usados no
Windows
Programas usados
no GNU/Linux
Pacote Office Microsoft Office (Word, Excel,
Powerpoint)
Koffice, LibreOffice (Writer,
Calc, Impress)
Música & Vídeo Windows Media Player Mplayer, VLC, Rhythm Box,
Amarok
Edição de Vídeo Windows Movie Maker Avidemux, Cinelerra, Lives,
OpenShot, Pitivi
Navegador Web Internet Explorer, Google Chrome,
Firefox
Google Chrome, Firefox,
Iceweasel, Konqueror
Gravação de Mídia Nero Brasero, K3b
Leitor de PDF Adobe PDF Reader Adobe PDF Reader, Evince,
Kpdf
Compactação Winrar, Winzip Tar, bzip2
Torrent uTorrent uTorrent, qBitTorrent,
Transmission, KTorrent
18. 18
Diretórios: organização dos
arquivos
● Divisão de diretórios do Linux (principais
diretórios):
/ → diretório raiz
/bin → comandos do sistema
/boot → inicialização do sistema
/dev → dispositivos do sistema
/etc → arquivos de configurações
/home → diretório dos usuários
/media → diretório para as mídias removíveis
(CD, Pen-drives)
/root → diretório do usuário administrador
/usr → programas de usuário
19. 19
Hands-On!
● Aplicativos do Xubuntu
– Gedit: editor de textos
– Firefox: navegador Web
● Acesse as apostilas de Linux:
http://paginapessoal.utfpr.edu.br/alexandregiron/pagina
pessoal/fundamentos-de-sistemas-operacionais-2015-2-tsi
● Faça o download
● Abra o(s) PDF(s): eles serão úteis!
– Gerenciador de Pacotes
20. 20
Instalação de Pacotes e Utilitários
● Gerenciador de Pacotes
– Forma simples de instalar programas
– Para instalar é necessário permissão de
administrador do sistema
– Menu → Sistema → Gerenciador de Pacotes
Synaptic
● Alternativa: comando apt-get
– Executado por meio do Interpretador de comandos
(Shell)
21. 21
Interpretador de Comandos: Shell
● Shell: programa que interpreta comandos de
usuário ao sistema
– Comandos internos (built-in) ou Programas externos
● Shell Script
– Arquivo composto por um conjunto de comandos
● Tipos:
– sh: originário do UNIX
– bash (Bourne Again Shell): mais utilizado no
GNU/Linux
– csh (C shell): sintaxe de comandos similar à da
linguagem C
23. 23
Quando usar Shell Scripting
● Automatização de tarefas simples
– Criação/cópia/movimentação de arquivos ou
diretórios
– Processamento de dados
– Execução de programas em sequência
● Configurações do sistema
– Tarefas administrativas
● Configuração e Instalação de aplicações
24. 24
Shell Scripting: Passos
1. Escolher um tipo (sh, bash)
2. Utilizar um editor de texto para especificar os
comandos
– Gedit
– Leafpad
– Vim, nano
3. Executar o script
25. 25
Quais comandos posso utilizar?
● Hands-On! Ambientação.
Principais comandos:
– ls
– cd
– pwd
– man
– clear
– mkdir
– touch
– rm
– cp
– mv
– echo
– date
– cat
– find
– history
– shutdown -now
**Mais detalhes: consulte a apostila!
26. 26
O primeiro script
#!/bin/bash
# declarar STRING e o dir. atual
STRING="Meu Primeiro Script Shell Linux"
Meudir=$(pwd)
#mostrar o conteúdo em tela
echo $STRING
# parâmetro informado ao script:
echo “Autor do script:” $1 $2 $3
echo “Fim da execução!”
exit
● Salve o script como script.sh
chmod +x script.sh
● Execução:
./script.sh Nome do Participante
27. 27
Sintaxe básica
● Cada linha corresponde a um (ou mais)
comandos a executar
– Linhas precedidas por # são comentários
● Variáveis:
– Não há necessidade de declaração de tipos
– Padrão: string
– Acesso por meio do operador $
#Declaração
NOMEVAR=Conteudo
#Acesso
OUTRAVAR=$NOMEVAR
28. 28
Abordagem deste Minicurso
● Prática: Dirigida por Resolução de Problemas
– Não substitui a leitura de apostilas/livros!
● Lista de Problemas
(Rede):
1. Configurações de rede
2. Download de arquivos
da Internet
● Lista de Problemas (Admin.):
1. Informações do sistema Linux
2. Usuários logados no sistema
3. Processos em execução
4. Backup
5. Compartilhando Arquivos no SO
6. Permissões
7. Procurar de arquivos
8. Redirecionamento de saída e Pipeline
9. Ler a partir de arquivos CSV
29. 29
Problema 1: Informações do
sistema Linux
● Como descobrir informações do sistema?
● Comando:
uname <opções>
● Opções
– -a : todas as informações
– -m : tipo de máquina
– -p : tipo do processador
– -r : versão do sistema
– --help : lista as opções disponíveis
30. 30
Problema 1: script
#!/bin/bash
# exibir informações do sistema
uname -a
# exibir info. do tipo de máquina
uname -r
#exibir versão
uname -v
exit
31. 31
Problema 2: Usuários logados
● Descobrir usuários logados no sistema
● Comando:
who <opções>
● Opções
– -a: mostra todos usuários
– -q: todos os nomes de login
– --help: lista todas as opções
33. 33
Problema 3: Gerenciando
processos
● Processos em execução no sistema
– Processo é um programa em execução
● Comandos:
ps <opções>
top <opções>
jobs <opções
● Finalizar processos
kill <opções>
34. 34
Problema 3: estruturas
condicionais
● Uso de estruturas condicionais no script
if [ <condicao> ]
then
<comandos>
fi
● Parâmetros de execução do script
$1, $2, $3 ...
./script par1 par2 par3
35. 35
Problema 3: script
#!/bin/bash
# verificar parâmetro
if [ “$1” == “ps” ]
then
ps -ef
fi
if [ “$1” == “top” ]
then
top
fi
exit 0 #valor de retorno do script
36. 36
Problema 3: finalizando
processos
● Script para finalizar processo
– Precisamos identificar o PID (Identificação de
processo) ou o nome
– Realizar o comando kill
kill PID
kill -9 PID
● Alternativa:
– Encerrar por nome
killall -e firefox
37. 37
Problema 3: script para encerrar
(por nome) processo
#!/bin/bash
# Testa se o parâmetro
# está presente
if [ -n “$1” ]
then
parametro=$1
killall -e $parametro
fi
exit
38. 38
Problema 3: Hands-On
● Modifique os scripts:
– Para identificar os processos que executam em
segundo plano
● Comando: jobs
– Para encerrar um processo pelo seu PID
● Comando: kill <PID>
39. 39
Problema 4: Backup
● Realizar backup de arquivos e diretórios
● Alguns requisitos:
– Espaço ocupado:
● Compactação dos arquivos
● Cópia integral
● Algumas formas (cópia):
– dump <opções>
– dd <opções>
– cp <opções>
40. 40
Problema 4: Backup
● Compactação de Arquivos:
– tar <opções>
– zip <opções>
● Outras abordagens
– Programas específicos para backup
– Compactação usando a interface gráfica
● Botão direito → Comprimir …
41. 41
Problema 4: Backup
● Script para:
– Compactar os arquivos utilizados neste minicurso
até agora
● Utilize um nome que descreva informações do backup
(data, horário, conteúdo)
– Copiar para um armazenamento (ou outro diretório)
● Localização dos dispositivos: /media/
42. 42
Problema 4: script
#!/bin/bash
# compactar diretório com tar
# Par. 1 é o diretório (.)
# Par. 2 é o arquivo final (arq.zip)
tar -cvf $2 $1
#criar diretório de backup
mkdir BACKUP
# copiar para o armazenamento
cp $2 “BACKUP/$2”
exit
43. 43
Problema 5: Compartilhamento
de Arquivos no SO
● Linux fornece métodos para compartilhar
arquivos no SO
– Criação de atalhos
– Compartilhar arquivos para diferentes usuários
● Dois métodos:
– Soft Links: link simbólico
– Hard Links: referência ao arquivo
● Requisito:
– Conhecer o caminho do arquivo
44. 44
Problema 5: Compartilhamento
de Arquivos no SO
● Todo arquivo no Linux tem um caminho:
● Caminho Absoluto
– Desde o diretório raiz até o diretório do arquivo
– Começam (normalmente) com a /
/home/aluno/Documentos/Arquivo.txt
● Caminho relativo
– Refere-se ao diretório “corrente” (atual)
Arquivo.txt
Documentos/Arquivo.txt
● Um link é criado por meio do caminho
do arquivo
45. 45
Problema 5: Compartilhamento
de Arquivos no SO
● Soft Links
– Comando:
ln -S caminhoArquivo nomeLink
● Hard Links
– Comando:
ln caminhoArquivo nomeLink
● Criar um script para
– Dado o caminho (absoluto ou relativo) do arquivo
– Criar um soft link e um hard link para
o arquivo
46. 46
Problema 5: script
● Faça modificações no arquivo
– Compare o resultado nos links criados
#!/bin/bash
# Criação do SoftLink
# Par. 1 é o caminho do arquivo
# Par. 2 é o nome do Soft link
ln -s $1 $2
# Par. 3 é o nome do Hard Link
ln $1 $3
# exibir o resultado
ls -la
exit
47. 47
Problema 6: Permissões
● Usuários comuns Usuário Administrador
● Permissões:
– ACL: Access Control List
● Verificar permissões no Linux:
– Comando chmod
chmod <valorOctal> nomeArquivo
49. 49
Problema 6: Permissões
● Exemplo: Owner – Group – Universe
● Fazer script para atribuir permissões de escrita,
gravação e execução recursivamente em um
diretório
50. 50
Problema 6: script
#!/bin/bash
# Exibir as permissões do diretório
ls -la $1
# Atribuir permissão recursivamente
# no diretório
chmod -R +x $1
# exibir o resultado
ls -la $1
exit
51. 51
Problema 7: Procurar arquivos
● Sistemas com milhares de arquivos
– Realizar busca manualmente é inviável
● Script realizar busca por arquivos
– Comando: find
find / -name NomeArquivo
● “/” é o caminho do diretório de início da busca
● -name: busca pelo nome do arquivo
– Comando: grep
52. 52
Problema 7: script
#!/bin/bash
# busca a partir do diretório atual
echo “Buscando a partir do dir. atual”
find . -name “$1”
echo “Buscando a partir do dir. raiz”
find / -name “$1”
exit
53. 53
Problema 7: Procurar dentro dos
arquivos
● Unir comando grep com o find
● Comando grep:
grep <opções> ' texto a procurar ' nomeArquivo
– Exemplos:
grep -l '/bin/bash' BACKUP/script.sh
grep -r '/bin/bash' BACKUP/*
● União com o find
find . -name “*.sh” -exec grep 'Texto a procurar' {} ;
54. 54
Problema 7: script (find + grep)
#!/bin/bash
# busca todos os scripts a partir do
# diretório atual cujo conteúdo tenha
# o texto 'ls'
find . -name “*.sh” -exec grep -l 'ls' {} ;
exit
55. 55
Problema 8: Redirecionamento de
saída e Pipeline
● Pipeline em shell script
– Agrupamento de comandos
– Exemplo:
ls | grep sh
● Redirecionamento de saída
– Saída de um comando armazenada em um arquivo
– Exemplo:
ls -la > arquivoLs.txt
56. 56
Problema 8: Redirecionamento de
saída e Pipeline
● Aplicável em vários contextos diferentes
● Script para realizar um cálculo usando a
calculadora do Linux:
– Comando: bc
● Redirecionando para o bc
– Exemplo:
“60+30” | bc
57. 57
Problema 8: script
#!/bin/bash
# Calcular a soma entre dois números
echo “Digite o primeiro n° e tecle enter”
read a
echo “Digite o segundo n°”
read b
echo “$a + $b” | bc
exit
58. 58
Problema 8
● Hands On!
– Faça um script para realizar as 4 operações básicas
(soma, subtração, multiplicação e divisão)
– Modifique o script para que o resultado de cada
operação seja armazenado em um arquivo
“resultado.txt”
59. 59
Problema 9: entrada de arquivos
● Arquivo CSV (Comma-separated values)
– Baixe o arquivo CSV (Salário) da página
● Script shell pode ler o conteúdo
– “Comando” awk
– AWK é uma linguagem (Aho, Weinberger and
Kernighan)
– Exemplos:
awk -F ',' ' {print $0 }' Salario.csv
awk -F: '{ print $1 }' /etc/passwd | sort
60. 60
Problema 9: ler arquivos CSV
● Script para ler apenas a primeira coluna do
arquivo “Salario.csv”
– Delimitador: vírgula (“,”)
– Salve em um novo arquivo “Coluna1Nome.txt”
61. 61
Problema 9: script
#!/bin/bash
# Exibir a primeira coluna do arquivo CSV
echo “Primeira coluna:”
awk -F ',' ' {print $1} ' Salario.csv > Coluna1Nome.txt
exit
62. 62
Problema 9: outra solução: linha
por linha
#!/bin/bash
# estrutura de repetição:
input="Salario.csv"
while read line
do
echo "Linha : $line"
done < $input
63. 63
Problema 10: configuração de
rede
● Quais as atuais configurações de rede do
sistema?
– Comando ifconfig : exibir as configurações
– Comando ping : enviar um pacote ICMP para um
determinado host
– Comando nslookup : informações de domínio
● Script para
– Exibir as configurações de rede, testar a conexão
de internet, exibir informações de domínio
64. 64
Problema 10: script
#!/bin/bash
# Configurações ativas e inativas
ifconfig -a
# Testar conexão (três tentativas)
ping www.g1.globo.com -c 3
# exibir informações de domínio
nslookup microsoft.com
exit
65. 65
Problema 11: Download da
internet
● Script para realizar um download? N
downloads?
– Comando wget (Web Get): download de arquivos
wget –O nomeArquivo endereçoWeb
– FTP (File Transfer Protocol): download via FTP
● Script para realizar downloads
66. 66
Problema 11: Download da
internet
● Proxy
– Computador que atua entre a rede local e a rede
externa (Internet)
● O endereço do proxy deve ser configurado para
utilização
export http_proxy=“dominio:numPorta”
export http_proxy=“usuário:senha@
dominioOuIP:numPorta”
67. 67
Problema 11: script
#!/bin/bash
# Download via wget
wget -O apostila_so.pdf
“http://paginapessoal.utfpr.edu.br/alexandregiro
n/paginapessoal/fundamentos-de-sistemas-
operacionais-2015-2-
tsi/apostila_de_sistemas_operacionais.pdf/at_dow
nload/file”
exit
68. 68
Problema 12
● Hands On!
– Faça um arquivo txt contendo as URLs das
apostilas de linux na página pessoal
– Utilize o wget para ler as URLs desse arquivo para
realizar o download das apostilas
wget -i Arquivo.txt
– Compacte os arquivos usando o comando tar
69. 69
Muitos problemas?
● Aprendizado de Linux e Shell script requer
leitura
– Manuais dos comandos
– Exemplos de utilização
● Mais importante:
– Experimentação!
– Testes
– Prática