Prática de Software e Hardware Básico
Professor Me. Ricardo FerrariFISMA
E-mail/Msn: [email protected]
Introdução ao Universo Linux
Conhecendo o Linux Desenvolvido por Linus Torvalds Baseado em unix, é um sistema POSIX (padrão
para garantir portabilidade de programas entre SOs diferentes)
Qualquer pessoa pode alterar o kernel do Linux desde que distribua isso para a comunidade.
Introdução ao Universo Linux
Sua história
Projeto particular de Linus e acabou tendo colaboração de hackers do mundo todo (Linus+Unix=Linux)
Seria uma melhora do Minix
Em 1992 é lançada a primeira versão estável do Linux
Conhecido por:
Mais segurança Livre de vírus (programas oficias de graças através do
repositório padrão, autenticação necessária do root para instalar programas e não possui arquivos executáveis como .exe)
Multiusuário Melhor para redes Correção de bugs gratuita e rápida
Introdução ao Universo Linux
Conhecendo o Unix Desenvolvido na década de 60 por Ken Tompson
(AT&T) Reescrito em 1973 em linguagem C Surgiram sistemas compatíveis e baseados, todos
seguindo o padrão POSIX Em 1979 já permitia desenvolvimento de
programas caseiros Variações do Unix:
BSD, Solaris, Linux e outros
Manual de Referências
Exemplos: man ls
Name, synopsis, flags, description, examples, files, return value, related information, diagnostics, bugs, warning author standards conformance (tipos de descrições)
ls -l (lista arquivos e diretórios) ls -a (lista arquivos e diretórios + arquivos ocultos
como “.” e “..”) Explicar comandos com exemplos na
lousa/terminal
Sintaxe do Manual de Referências
man + comando Consulta o manual e apresenta todas as páginas Enter: próxima linha Espaço: próxima página q: finaliza a consulta
Principais Características do Linux
Modular
Adiciona/remove partes do sistema sem afetar outras partes Multitarefa
Pode executar várias tarefas em backgroud, deixando o terminal livre para outras atividades
Multiusuário
Permite que usuários rodem o sistema simultaneamente e executem aplicativos no próprio servidor
Transportabilidade
Executa programas em ambientes diferentes do qual ele foi criado
Principais Características do Linux
Comunicação com muita facilidade Comunicação entre Linux e Windows através de
servidor Samba Comunicação remota entre computadores
Ambiente propício para desenvolvimento Ambiente voltado para esse segmento Compiladores: C, cobol, fortran, pascal, basic, c++.
perl, java, php, html, etc... Shell que é o interpretador de comandos e pode ser
utilizado para programação. Opção do delphi: kylix e lazarus
Estrutura do Sistema
Níveis no Linux: Kernel interage com o hardware O shell é o ambiente de linha de comando A camada do usuário que possui os aplicativos e
ferramentas
O Kernel
Responsável pelo gerenciamento básico do sistema, dando suporte completo para utilização do hardware
Fica carregado na memória depois que o sistema foi inicializado
Possui módulos programados em C, como de gerenciamento de memória e processos
Shell
Existem tipos de shells, como: sh, csh e bash. Por padrão o ubuntu utiliza o bash
É um interpretador de comandos, o usuário digita o comando, o shell traduz para que o kernel entenda o que deve fazer
Possui um recurso muito poderoso, que são os pipes (canos), permitindo que a saída de um comando seja a entrada de outro (executando vários comandos em uma única linha)
Exemplos: ls | grep “filtro” , cat arq | sort e scripts
Shell
Exemplo de script
#! /bin/bash
cd /home/ferrari/
mkdir script
cd script
echo “conteúdo do arquivo” > arquivo
Salva e dar permissão de execução
Executa com ./nome_do_script
Questão:
Crie seu próprio script com o comando echo” ”
Ferramentas e Aplicativos (camada do usuário)
Contém as ferramentas que são utilizadas pelos usuários
Essas ferramentas podem ser criadas através de scripts e comandos, desde que siga algumas regras, como utilizar sempre entradas e saídas sem formatação e criar interface amigável para usuário separada da ferramenta
Utilitários para Linux
São programas do sistema Chamados pelo terminal ou modo gráfico Tipos:
Manipulação de arquivos, diretórios e textos Comunicação Manutenção do sistema
Obs.: o linux é case sensitive, ou seja, o arquivo Alunos é diferente de alunos.
Processos
Criado quando um programa é executado Dois tipos:
Background: o terminal fica livre para outras tarefas
Foreground: o terminal fica retido até o término do processo
Para colocar o processo em background é necessário o símbolo & no final do comando
Exemplo: find [argumento] (opção) & Todo processo no Linux possui uma entrada padrão (0),
saída padrão (1) e saída padrão de erros (2)
Redirecionamento e Pipes
Caracteres utilizados
>: redirecionamento de saída para um novo arquivo
>>: redirecionamento de saída para um novo arquivo ou para o final de um já existente
<: redirecionamento de entrada
| ou ^: canalização da saída de um comando para ser entrada de outro comando
Exemplos:
ls > lista.txt
ls >> lista.txt
ls | grep t*
Usuários
Tipos:
Usuários comuns ($): utilizam recursos liberados pelo root
Superusuários, root (#) ou administradores do sistema: o usuário mais conhecido é o root e tem acesso irrestrito no sistema
Informações ficam em /etc/passwd e /etc/group
O uid é o root e gid é o grupo de administradores do sistema
Variáveis do sistema
PATH: onde estão os comandos do usuários
LOGNAME: login do usuário
HOME: onde está o diretório do usuário
TERM: tipo do terminal utilizado pelo usuário
Para imprimir o valor das variáveis: echo $PATH
Para listar as variáveis: set ou env
Comandos do Linux
Identificação do usuário
who e whoami (exibe usuários logados no S.O.) # who # whoami
finger (exibe detalhes de um usuário local ou remoto conectado em sua máquina)
# finger ferrari Comunicação com usuários
mail (para ler suas mensagens e enviar para usuários da máquina ou da rede)
write (envia mensagens para usuário remoto conectado em sua máquina)
# write ferrari
Comandos do Linux Comandos diversos
date (exibe data e hora do S.O.)
# date
echo (mostra o conteúdo de uma variável)
# nome = Ricardo
# echo $nome
passwd (altera sua própria senha, apenas o root altera de outros usuários)
# passwd
lp (comando para impressão de arquivos)
# lp tcc.pdf
uname (informações dobre o S.O.)
cal (exibe o calendário do mês)
cp (copia arquivos de um lugar para outra)
# cp tcc.pdf /home/projetos
mount (usado para montar dispositivos como CD-Rom, HD e disquete)
ln (cria um link, ou atalho, para um determinado lugar)
# ln -s /mnt/hda1 /home/windows
Arquivos e Diretórios
Sistema de arquivos
Estrutura de árvore invertida
Raiz é o /
Pathname (caminho)
Absoluto: caminho a partir do /
Relativo: não começam com /, começam a partir do ponto atual
Tipos de arquivos
Arquivos simples: como tipo texto
Diretórios: como o home
Arquivos especiais: como o dev (arquivos de hardware)
Comandos para manipulação de diretórios
pwd (informa o caminho absoluto); comando ls (lista o conteúdo de um diretório); mkdir (cria um diretório); rmdir (remove diretórios vazios)
Arquivos e Diretórios
Os diretórios especiais: . e ..
Diretório atual: .
Diretório pai: ..
Principais diretórios do sistema Linux
/root: arquivos de configuração do root
/bin: maioria dos comandos Linux
/lib: bibliotecas do Linux
/usr: arquivos e diretórios do Linux
/etc: maioria dos aquivos e comandos de administração do computador, arquivos de configuração e inicialização do kernel e de programas
/home: diretórios dos usuários
/dev: arquivos para comunicação com periféricos
/tmp: arquivos temporários
Manipulação de Arquivos - I
Arquivos e diretórios d: diretório: drw-r—r-- pasta -: arquivo: -rw-r—r-- arquivo l: link simbólico: lrw-r—r-- link
Permissões r: read; w: write; x: execute rwxrw-r-- : os três primeiros para o dono, os três do
meio para o grupo e os três últimos para outros usuários
Manipulação de arquivos - I
Comandos para manipulação de arquivos
cat: lista conteúdo de um arquivo
more: exibe o conteúdo do arquivo paginando
pg: igual o more
head: primeiras linhas de um arquivo (por padrão as 10 primeiras)
head -20 arquivo tail: últimas linhas de um arquivo (por padrão as 10 últimas)
tail -15 arquivo cp: copia arquivos de um lugar para outro
cp arq1 /home/aluno/arq2 arq1: origem e arq2 destino
ln: cria link ou atalho
ln -s arq1 arq2 (onde arq1 é o arquivo real e arq2 é o link) mv: move e renomeia arquivo e diretórios
mv arq1 /home (move o arq1 para a pasta home) rm: remove arquivos e diretórios
Manipulação de arquivos - I
tar
Para juntar vários arquivos e diretórios:
tar -cvf imagens.tar imagens c: para criar o arquivo imagens.tar; v: para exibir os arquivos
manipulados e f: para especificar o arquivo a ser criado (esse sempre é por último)
Se quiser extrair troque o c por x O tar não compacta, por isso utilizamos o gzip ou bzip2
gzip
gzip imagens.tar (cria o arquivo imagens.tar.gz)
bzip2
bzip2 imagens.tar (cria o arquivo imagens.tar.bz2)
tar + gzip/bzip2
tar -czvf imagens.tar.gz imagens
tar -cjvf imagens.tar.bz2 imagens
Manipulação de arquivos - I
chmod (alterar permissão de arquivo) Exemplo: chmod 764 (7: dono, 6: grupo e 4: outros) Dono: leitura, escrita e execução Grupo: leitura e escrita Outros: leitura
Exercícios
1) Acione o terminal e descubra em qual diretório você está. Liste os arquivos deste diretório. Entre no diretório tmp, crie um diretório teste_1 com o seguinte comando: mkdir teste_1, crie um diretório dentro do diretório teste_1 com o seguinte comando: mkdir teste_2.
2) Apague os dois diretórios criados anteriormente com apenas uma linha de comando. Crie (na pasta do usuário) os diretório teste1 , teste2 e teste3, liste o conteúdo doasua pasta home para confirmar a criação dos diretórios.
3) Entre em teste1 e crie os arquivos, contas.txt, supermercado.txt, agora utilizando o vim crie no mesmo diretório os arquios FEA.txt, fea.txt, Fea.txt e Outros.txt (digite o nome dos arquivos exatamente como escrito aqui), com algum conteúdo.
4) Volte para o diretório tmp, crie um novo diretório chamado aula, mova os diretórios teste1, teste2 e teste3 (que estão em home) para dentro do diretório aula
5) Mude as permissões das 3 pastas e os arquivos dentro delas para: Dono: leitura, escrita e execução, grupo: leitura e escrita e outros: leitura
6) Volte para o diretório home, gere um arquivo .tar chamado teste com o conteúdo da pasta aula (que está na pasta tmp), apague a pasta aula, extraía o conteúdo do arquivo tar que você gerou.
7) Entre novamente na pasta teste1 que acabou de extrair do arquivo tar, gere um arquivo chamado TUDO.TXT com a junção de todos os arquivos de texto que estão neste diretório. (faça redirecionamento com >>) Compacte este novo arquivo com o Gzip
Exercícios
Verifique onde você está. Liste o conteúdo do /, /etc, /var e /home Entre na pasta /dev, liste o conteúdo e encontre os resultados
iniciados por sda ou hda Entre na pasta /tmp, crie uma pasta teste, entre na pasta teste
e crie um arquivo arq.txt. Liste o conteúdo de /tmp com ls -l, pegue as permissões da pasta teste e inverta as permissões de grupo e outros (ex: rwxrwxr-x para rwx----w-) recursivamente.
Liste o conteúdo de /tmp e veja se a permissão de teste mudou, faça o mesmo para o arquivo arq.txt
Remova a pasta teste
Exercícios
Crie a estrutura da Fea com cursos, disciplinas e ementas
De permissão total para o dono as pastas das disciplinas e zero para grupo e outros
Faça um backup da estrutura com o nome fea.tar.gz
Mover fea.tar.gz para pasta /tmp, extrair o conteúdo