Introdução ao Unix LAGEMAR/UFF Dezembro 2001
Conteúdo Introdução Arquivos e diretórios Manipulação de arquivos Operações em arquivos Proteção, atalhos e localização Padrões e busca Edição Personalização Processos Armazenamento
Bibliografia Sato, H.K. - Comandos básicos para uso do Unix. PPPG/UFBa, 1993 Fiamingo, F.G. - Introduction to Unix. OSU, 1996 Jones, D. - Course 85321. CQU, 2000 Greenfield, L. - Linux Users Guide. LDP, 1996 Siever, E. - Linux - o guia essencial. Campus, 2000 Welsh, M. - Dominando o Linux. Ciência Moderna, 1997 Cornes, P. - Linux A-Z. Prentice-Hall, 1997
Aula 0 - Introdução Conceitos de sistemas operacionais Características do Unix Login e Logout Ajuda online
Sistema operacional Gerenciador de recursos Máquina estendida Processador Memória Dispositivos Entrada e saída Armazenagem Comunicações Máquina estendida Disco MEM CPU E/S Rede
Estrutura de um Sistema Programas Sistema Operacional Hardware
Conceitos básicos Processo Arquivo programa em execução Arquivo informações logicamente relacionadas Processos e arquivos são organizados em árvores
Estrutura do Unix Núcleo Chamadas do sistema Interpretador de comandos interage com o hardware Chamadas do sistema acesso aos serviços do núcleo Interpretador de comandos interface para as chamadas do sistema Comandos programas utilitários do sistema
Estrutura de um Sistema Programas Sistema Operacional Hardware
Estrutura do Unix Utilitários Shell System calls Kernel Hardware Bibliotecas Aplicativos
Características do Unix Multiusuário/Multitarefa Variedade de ferramentas Flexibilidade/Concisão Tudo é um arquivo Arquivos tem um lugar Processos tem vida
Componentes Compiladores Bibliotecas Rede TCP/IP X-Windows
Sabores de Unix SunOS/Solaris Sun Microsystems Digital Unix (Tru64) Digital/Compaq AIX IBM HP-UX Hewlett Packard Irix SGI UNICOS Cray NetBSD, FreeBSD UC Berkeley / the Net Linux Linus Torvalds / the Net
Histórico do Unix 1969 - Criado por Ken Thompson e Dennis Ritchie dos Lab. Bell (PDP-7) 1971 - Transportado para um PDP-11 (memória 16 KB, disco 512 KB) 1973 - Rescrito na linguagem C de Dennis Ritchie 1974 - Distribuído pela AT&T para as universidades 1977 - Versões para outras máquinas. 500 sistemas em uso 1980 - BSD 4.1 de Berkeley 1984 - Autorizada a comercialização do Unix. 100.000 sistemas em uso 1988 - System V R4 (AT&T e Sun) 1991 - Linus Torvalds anuncia Linux 0.01 para 386 na Internet 1992 - Linux licenciado sob GPL 1993 - USL comprado pela Novell 1996 - Versão 2.0 do Linux
Acesso ao sistema Terminais Login Logout vt100, telnet, xterm Nome do usuário Senha Logout exit ^D
Senhas Nunca use: Nunca escreva ou dê sua senha para ninguém qualquer palavra de qualquer dicionário um nome, apelido, marca, título, slogan... informações que você carrega na carteira números ou informações associados a você exemplos publicados de senhas Nunca escreva ou dê sua senha para ninguém
Senhas Use: Troque sua senha com freqüência mínimo de 6 caracteres misturas de letras, números e símbolos mistura de maiúsculas e minúsculas mistura de palavras erros de grafia senhas que você se lembre Troque sua senha com freqüência
Troca de senha Comando passwd Comando yppasswd (nis) Comando nispasswd (nis+)
Ajuda online Comando man Comando info Manuais online (html, pdf) Linux Documentation Project http://www.linuxdoc.org
Aula 1 - Arquivos e diretórios Estrutura de diretórios Nomes e tipos de arquivos Caminhos Comandos pwd, cd, ls, mkdir, rmdir
Estrutura de Diretórios Arquivos são organizados em diretórios Diretórios são arquivos com informações sobre outros arquivos Diretórios são organizados em árvores
Nomes e tipos de arquivos O nome de um arquivo pode conter até 255 caracteres São permitidos caracteres alfanuméricos e alguns símbolos: . _ # % = Não devem ser usados os caracteres especiais definidos pelo interpretador de comandos
Caracteres especiais ; separador de comandos + execução em background ( ) agrupamento de comandos | concatenador de comandos > < símbolos de redirecionamento ” \ ’ enfatiza os outros caracteres ` substituição de comandos separadores de palavras: novalinha espaço tab metacaracteres de caminhos: * ? [ ] ~ + - @ !
Caminhos Absolutos - referem-se à raiz dos diretórios: /home/paulo/teste.f /etc/passwd /var/spool/mail Relativos - referem-se ao diretório corrente: dados/abc.xyz
Comandos pwd mostra o diretório corrente cd muda o diretório corrente ls lista um diretório (opções l, a, r) mkdir cria um diretório rmdir remove um diretório
Arquivos ocultos Arquivos que começam por um ponto só são mostrados pelo comando ls -a . representa o diretório corrente .. representa o diretório acima
Aula 2 - Manipulação de arquivos Expansão de caminhos Comandos cp, mv, rm, touch Visualização: cat, more, less, tail, head
Expansão de caminhos O Unix utiliza metacaracteres para abreviar os caminhos * qualquer número de caracteres ? um caracter [abc...] um dos caracteres na lista [a-z] um dos caracteres na faixa [^abc...] qualquer caracteres fora da lista (ou faixa) Os metacaracteres são traduzidos direta-mente pelo interpretador de comandos
Exemplos de expansão $ ls temp/* motd passwd $ ls /dev/tty? /dev/tty0 /dev/tty2 /dev/tty4 /dev/tty6 /dev/tty8 /dev/ttyl /dev/tty3 /dev/tty5 /dev/tty7 /dev/tty9 $ ls /dev/tty?[23456] /dev/ttyS2 /dev/ttyp2 /dev/ttyq2 /dev/ttyr2 /dev/ttys2 /dev/ttyS3 /dev/ttyp3 /dev/ttyq3 /dev/ttyr3 /dev/ttys3 /dev/ttyS4 /dev/ttyp4 /dev/ttyq4 /dev/ttyr4 /dev/ttys4 /dev/ttyS5 /dev/ttyp5 /dev/ttyq5 /dev/ttyr5 /dev/ttys5 /dev/ttyS6 /dev/ttyp6 /dev/ttyq6 /dev/ttyr6 /dev/ttys6
Ênfase Para inibir a tradução dos caracteres especiais: \ (contrabarra): protege o caracter especial seguinte ’ (aspa): protege todos os caracteres especiais até a próxima aspa ” (aspa dupla) protege todos os caracteres especiais até a próxima aspa dupla, exceto $ e ` (crase)
Exemplos de ênfase $ echo 'Aspas simples "protegem" aspas duplas’ $ echo "Isto nao e' \"especial\"?" Isto nao e' "especial"?
Copiando arquivos - cp cp copia arquivos ou diretórios Formato: cp origem destino Se o destino for um diretório, copia um ou mais arquivos para o diretório Opções: -i pede confirmação -p preserva a data e hora -R copia recursivamente
Copiando arquivos - exemplos cp file1.f file2.f *.c /home/joao/geral cp ../fonte . cp fonte .. cp fonte ./abc cp fonte /home/maria cp /home/joao/abc/* /home/maria/xyz cp -R /home/joao/abc/* /home/maria/xyz
Movendo arquivos - mv mv move ou renomeia arquivos ou diretórios Formato: mv origens destino Se o destino for um diretório, copia para o diretório Opções: -i pede confirmação -f força a movimentação, mesmo que o arquivo exista
Movendo arquivos - exemplos mv abc xyz.a mv book manual mv manual/* .
Apagando arquivos - rm rm apaga arquivos Formato: rm arquivos Opções: -i pede confirmação -f força a remoção -r remove recursivamente - PERIGO
Apagando arquivos - exemplos rm abc rm abc def rm -i *.o rm -r testes rm -r * .o espaço em branco fatal
Alterando a data - touch touch atualiza a data (e hora) de acessso ou modificação de arquivos Formato: touch arquivos Opções -a altera apenas a data de acesso -m altera apenas a data de modificação data altera para data especificada Se o arquivo não existir, é criado com tamanho 0 bytes
Visualização: cat cat mostra o conteúdo de arquivos Formato: cat arquivos Pode ser usado para concatenar arquivos, como veremos adiante
Visualização: more e less more mostra, por partes, o conteúdo de arquivos Formato: more arquivos Comandos: return para avançar uma linha espaço para avançar uma página b para voltar uma página h para ajuda de outros comandos Versão moderna: less
Visualização: tail e head head mostra as 10 primeira linhas de um arquivo tail mostra as 10 últimas linhas de um arquivo Opção -n mostra n linhas tail -r mostra de trás para a frente tail -f mostra continuamente
Resumo da visualização more tail head cat
Aula 3 - Proteção e atalhos Atributos de arquivos Comandos chmod, umask, chown e chgrp Links Comando ln
Proteção no Unix Baseado no UID e GID Relações Acessos usuário (u) grupo (g) outros (o) Acessos leitura (r) gravação (w) execução (x)
Atributos de arquivos n UID GID tam. data nome outros grupo usuário $ ls -l drwxr-x--- 2 sato staff 512 Aug 16 14:17 biblio -rw-r--r-- 1 sato staff 13 Aug 27 15:50 carta -rwxr-xr-x 1 sato staff 3339 Sep 03 13:35 prog1 n UID GID tam. data nome outros grupo usuário tipo
Alterando a proteção - chmod chmod altera a proteção dos arquivos Formato: chmod proteção arquivos Opção -R recursivo Modos mneumônico numérico
chmod - funcionamento Modo mneumônico Quem Operação Acesso u usuário + acrescenta r leitura g grupo - retira w gravação o outros = atribui x execução a todos (all) Modo numérico r = 4 w = 2 x = 1
chmod - exemplos chmod +x abc chmod uo-w abc chmod a=rx abc chmod 640 abc chmod 5 abc chmod -R a+r .
Acesso a arquivos e diretórios Bit Arquivos Diretórios r ler listar w escrever alterar x executar acessar
Definindo a proteção - umask umask define a proteção no momento da criação do arquivo ou diretório Formato: umask nnn onde n é o complemento da proteção Arquivos nunca são criados com o bit de execução
Definindo a proteção - exemplos umask 002 cria arquivos com 664 e diretórios com 775 umask 077 cria arquivos com 600 e diretórios com 700
Aula 4 - Operações em arquivos Localizando arquivos - find Redirecionamento de entrada e saída Comandos wc, sort, cut, cmp e diff
Localizando arquivos - find find procura arquivos em uma árvore Formato: find origem opções Opções -name procura por nome (padrão) -print mostra o resultado (padrão) -type procura por tipo de arquivo -size procura por tamanho Existem muito mais opções (use o man)
find - exemplos $ find . -print ./backup ./backup/motd.bak ./backup/passwd.bak ./text ./text/motd ./text/passwd $ find
find - exemplos $ find . -name "*.bak" -print ./backup/motd.bak ./backup/passwd.bak $ find . -name "*.bak" -exec rm -i {} \; rm: remove ./backup/passwd.bak (yes/no)? y rm: remove ./backup/motd.bak (yes/no)? y
Redirecionamento de E/S Funcionamento padrão dos comandos: Comando Saída padrão Saída de erros Entrada 1 2
Redirecionamento de E/S Formas de redirecionamento: Desc. Nome Abrev. Padrão Redir 0 Entrada padrão stdin Teclado < 1 Saída padrão stdout Vídeo > 2 Saída de erros stderr Vídeo 2> O símbolo >> indica uma anexação O símbolo << indica um delimitador O símbolo < pode ser omitido na maioria dos comandos
Redirecionamento - exemplos $ ls -l /usr/local/bin > lista $ ls -l /etc >> lista $ mail alfredo < arquivo $ mail alfredo << fim $ ls /bin | mail alfredo $ ls -l /var/spool 2> acesso_negado $ ls -l /var/spool 2> acesso_negado 1>&2
Redirecionamento - exemplos $ find / -name passwd -print find: /var/spool/cron: Permission denied find: /var/spool/atjobs: Permission denied find: /var/spool/atspool: Permission denied /usr/bin/passwd find: /root: Permission denied /etc/passwd $ find / -name passwd -print 2> /dev/null
Encadeamento de comandos É comum um programa utilizar como entrada o resultado de outro: > Comando Saída padrão Entrada Arquivo temporário <
Encadeamento de comandos A saída de um comando pode ser enviada diretamente para a entrada de outro: O símbolo | representa a canalização (ou pipe) Os comandos do Unix funcionam como filtros Comando Saída padrão Entrada |
Encadeamento - exemplos $ ls /bin | more $ find . -name "*.bak" -print | xargs rm rm: remove ./backup/passwd.bak (yes/no)? y rm: remove ./backup/motd.bak (yes/no)? y
Contando arquivos - wc wc quantifica o conteúdo de um arquivo Formato: wc opções arquivos Opções -l conta linhas -w conta palavras -c conta caracteres (bytes)
Contando arquivos - exemplos $ wc < /etc/passwd 21 42 775 $ wc /etc/passwd $ ls /bin | wc -l 82
Ordenação - sort sort ordena o conteúdo de um arquivo Formato: sort opções arquivos Pode ser combinado com uniq para eliminar linhas repetidas Opções: -n ordem numérica -r ordem reversa -t separador de campos (padrão: tab) +n salta n campos
Ordenação - exemplos $ wc -l * | sort -r $ sort lista | uniq -c $ sort +2 -n -t: /etc/passwd $ sort -k3 -n -t: /etc/passwd GNU sort
Seleção - cut cut seleciona as colunas de um arquivo Formato: cut opções arquivos Dois ou mais arquivos podem ser unidos em colunas pelos comandos paste e join Opções -d delimitador (padrão: tab) -f lista de campos selecionados -c lista de colunas (bytes)
Seleção - exemplos $ cut -d: -f1,5 /etc/passwd $ cut -c4 arquivo | paste - arquivo
Comparação - cmp, diff cmp compara o conteúdo de dois arquivos Formato: cmp arq1 arq2 Use diff para obter a lista de diferenças Opções -l lista os bytes diferentes -s só retorna o código de terminação
Aula 5 - Padrões e busca Reconhecimento de padrões Metacaracteres Comando grep
Reconhecimento de padrões Expressões regulares (regexp) permitem reconhecer padrões de texto As regexp são formadas por caracteres e metacaracteres interpretados pelos programas aplicativos Devem ser colocadas entre aspas para evitar a expansão pelo interpretador de comandos
Metacaracteres Carac. Casa com c o caracter c . qualquer caracter * 0 ou mais ocorrências da expressão regular anterior ^ o início da linha $ o fim da linha [abc] lista de caracteres \ inibe o sentido do caracter especial seguinte
Regexp - exemplos mal a cadeia mal ^mal mal no início da linha mal$ mal no fim da linha ^mal$ uma linha só com mal [Mm]al Mal ou mal m[aeiou]l a segunda letra é uma vogal m[^aeiou]l a segunda letra não é uma vogal m.l a segunda letra é qualquer caracter
Regexp - exemplos ^...$ qualquer linha com exatamente 3 caracteres ^\. qualquer linha que comece por um ponto ^[^.] qualquer linha que não comece por um ponto bugs* bug, bugs, bugss, etc... ”word” uma palavra entre aspas ”*word”* uma palavra com ou sem aspas
Regexp - exemplos [A-Z][A-Z]* uma ou mais letras maiúsculas [A-Z].* uma letra maiúscula, seguida por zero ou mais caracteres [A-Z]* zero ou mais letras maiúsculas [^0-9A-Za-z] qualquer símbolo (exceto letra ou algarismo
Busca de texto - grep grep procura uma expressão regular em um ou mais arquivos Formato: grep [opções] regexp [arquivos] Opções: -i não diferencia maiúsculas ou minúsculas -v mostra as linhas que não contém a expressão -c mostra o número de linhas encontradas
grep - exemplos $ grep aluno1 /etc/passwd aluno1:*:500:500::/home/aluno1:/bin/bash $ ls -l |grep Aug -rw-rw-rw- 1 pb staff 4764 Aug 10 2000 aliases.text -rw-rw-rw- 1 pb staff 5347 Aug 10 2000 aniv.htm drwxr-xr-x 2 pb staff 512 Aug 14 15:44 c++ drwxr-xr-x 2 pb staff 512 Aug 22 15:59 linuxbin -rw-rw-rw- 1 pb staff 8021 Aug 10 2000 qaviso.html -rw-r--r-- 1 pb staff 1474 Aug 29 18:56 uso
Aula 6 - Edição Comandos tr e sed Editor vi
Tradução de caracteres - tr tr traduz um conjunto de caracteres em outro Formato: tr cadeia1 [cadeia2] Opções: -c traduz pelos caracteres que não estão na cadeia1 -d apaga os caracteres definidos na cadeia1 -s elimina os caracteres múltiplos
tr - exemplos $ tr a z < /etc/passwd $ tr ’[A-Z]’ ’[a-z]’ < /etc/passwd $ tr -d ’ ’ < /etc/passwd
Edição de Arquivos - sed sed edita um ou mais arquivos sem intervenção do usuário Formato: sed [opções] [arquivos] Opções: -e ’instruções’ aplica as instruções aos arquivos -f arquivo aplica as instruções do arquivo -n suprime a saída normal
Instruções sed As instruções tem a forma geral Endereços: [endereço1][,endereço2] comando [argumentos] Endereços: n a linha n . a linha corrente $ a última linha do arquivo , o mesmo que 1,$ ; o mesmo que .,$ /padrão/ qualquer linha com o padrão
Comandos sed d apagar linhas p imprime linhas s substitui um padrão por uma cadeia n primeiras ocorrências na linha (padrão: n=1) g todas as ocorrências p mostra as linhas com substituições w escreve as linhas com substituições w escreve as linhas em um arquivo y traduz caracteres
sed - exemplos 1,$s/antes/depois/g /George/s/W// 4d3 d 1,10w/tmp/hello
Editor vi Disponível em todos os UNIX Péssima interface com o usuário Comandos são letras Modos de operação Edição Inserção Comando
Editor vi - Modo de edição h,j,k,l esquerda, direita, cima, baixo 0. $ início e fim da linha x apaga caracter r, R substitui caracter ou texto dd apaga linha yy copia linha p, P insere texto apagado J junta duas linhas ZZ salva e sai um número antes do comando indica repetição
Editor vi - Modo de inserção a, A insere depois do cursor, no fim da linha i, I insere antes do cursor, no início da linha o, O abre uma linha abaixo, acima do cursor BS apaga o caracter anterior ESC sai do modo de inserção
Editor vi - Modo comando / procura um padrão ! executa um comando do UNIX : comandos de editor (aceita comandos sed) w grava em um arquivo q abandona a edição x o mesmo que wq ou ZZ r lê de um arquivo n edita próximo arquivo ! força a execução do comando
Aula 7 - Personalização Perfis Variáveis de ambiente Aliases Histórico de comandos Outros editores (emacs, pico, ...)
Perfis Arquivos com comandos do UNIX Executados logo após o login Configuram o ambiente de um usuário Ocultos no diretório de login do usuário Dependem do tipo de login e shell Exemplos: .profile, .login, .bashrc, .xsession
Variáveis de ambiente Armazenam informações sobre: Escopo: caminhos parâmetros de programas ou do sistema Escopo: locais ao interpretador de comando globais para todas as cópias do shell
Variáveis de ambiente - exemplos Exemplos de variáveis do sistema: PATH caminhos onde buscar os programas MANPATH caminhos das páginas de manuais HOME diretório de login PWD diretório atual PS1 texto do prompt TERM tipo do terminal SHELL interpretador de comandos Exemplos de variáveis de programas: GS_LIB bibliotecas do Ghostscript CWPROOT diretório raiz do Seismic Unix
Variáveis de ambiente - uso Referência: adicionar $ ao início do nome Inicialização: arquivos de perfil do usuário ou do sistema Comandos: echo $var mostra o valor de var set exibe todas as variáveis ativas
Variáveis de ambiente - atribuição Bourne shell e assemelhados: MANPATH=/usr/man:/usr/local/man PATH=$PATH:/usr/local/bin export PATH C shell set manpath=/usr/man:/usr/local/man setenv path=($path /usr/local/bin)
Aliases Aliases são sinônimos para comandos Formato: alias nome=comando Outros comandos: alias mostra todos os sinônimos unalias elimina um sinônimo
Aliases - configuração Arquivos de configuração: .cshrc C shell .kshrc Korn shell .bashrc Bourne Again shell Executados a cada nova shell Devem ser definidos na variável ENV nos casos ksh e bash
Histórico de comandos Os comandos utilizados são guardados em um arquivo histórico Utilizaçao do arquivo: Csh comandos ! e fc Ksh comandos do vi ou emacs Bash setas do teclado O tamanho do histórico é determinado pelo usuário
O comando fc Formato: fc [opção] [comando] O comando é um nome ou número Opções: -e edita o comando (padrão: anterior) -l lista os comandos anteriores Alias r reexecuta um comando equivale a fc -e -
O editor emacs Poderoso (= complicado) Domínio público Disponível em muitos ambientes Multi-janela Multi-função (mail, desenvolvimento) Comandos são letras precedidas de Ctrl (C) ou Esc (M) Usado pela shell Korn
emacs - comandos essenciais C-h ajuda online (inclui tutorial) C-x C-s salva arquivo C-x C-c sai do editor C-x C-u desfaz a última edição C-x i inclui arquivo C-g aborta a operação corrente C-s localiza caracteres C-d elimina caracter sob o cursor
Aula 8 - Processos Comando ps e top Subprocessos Comandos crtl-Z, &, jobs, fg, bg, kill e at
Aula 9 - Armazenamento Comandos mount e umount Uso do espaço em disco: df e du Comandos tar, compress e zip Discos removíveis e fitas Comandos dd e cpio