Mestrado em Gestão de Informação Computadores e Redes de Comunicação, 2004/07 Sistema Operativo UNIX Ficha de Exercícios Nº2 Observação: Os alunos são encorajados a experimentar para além dos exemplos propostos, especialmente nas matérias em que se sintam menos confortáveis. Objectivos da ficha: Manipulação avançada de ficheiros e directórios. Opções e personalização do interpretador de comandos. Manipulação de conteúdos de ficheiros. Informações do sistema. Construção de scripts. Utilização do serviço de correio electrónico. Consolidação e compressão de ficheiros e directórios. Comandos úteis. 1. Manipulação avançada de ficheiros. a. Criar ficheiros 3 ficheiros vazios com o comando touch: noticias.txt, noticias-cultura.txt, noticias1999.txt, noticias2004.txt e noticias2005.txt. b. Executar listagens parciais usando os caracteres especiais? e *. Exemplos: ls noticias*, ls *cultura*, ls *200?.txt. Estes caracteres de expansão funcionam com todos os comandos UNIX não apenas com o comando ls. c. Criar um ficheiro com a listagem do directório /etc, usando o comando ls /etc > listagem-etc.txt. Apresentar o conteúdo deste ficheiro usando os comandos cat, head, tail, more e less. Usar a ajuda para perceber as diferenças entre estes comandos. Para terminar a execução dos comandos usar a tecla q. d. Criar um ficheiro com a listagem do directório de trabalho actual com o comando ls la > conteudos1.txt. Criar um novo documento noticias-desporto.txt. Criar um novo ficheiro com a listagem actual mas nome diferente com o comando ls la > conteudos2.txt. Experimentar os comandos diff e sdiff da seguinte forma: diff conteudos1.txt conteudos2.txt e sdiff conteudos1.txt conteudos2.txt. O que fazem estes comandos? e. Os comandos find, locate e whereis permitem procurar ficheiros no sistema. Utilizar a ajuda para perceber como funcionam e quais as diferenças entre eles.
2. Manipulação avançada de directórios. a. Criar dois directórios Pasta1 e pasta1. Correspondem a directórios diferentes? b. Alterar o nome de pasta1 para Pasta2 com o comando mv pasta1 Pasta2. Mover a Pasta2 para dentro da Pasta1 com mv Pasta2 Pasta1/.. Ver o resultado com o comando tree Pasta1. Alternativamente usar o comando find. c. Criar um novo directório Pasta0 e utilizar o comando cp r Pasta1 Pasta0. Usar o comando tree para perceber o que aconteceu. d. Utilizar o comando ln s Pasta0/Pasta1/Pasta2 Pasta2 para criar um atalho directamente para a Pasta2. Utilizar o comando ls la para ver o resultado. 3. Opções e manipulação do interpretador de comandos. a. Executar o comando echo $SHELL para saber qual o interpretador que está configurado. b. Executar o comando cat /etc/shells para saber quais os interpretadores disponíveis para utilização. c. O comando chsh permite alterar o interpretador que está a ser utilizado. Consultar a ajuda para perceber as diferenças existentes entre os diversos interpretadores. 4. Manipulação de conteúdos de ficheiros. a. O editor de texto pico permite manipular o conteúdo de ficheiros. Experimentar criar um novo ficheiro usando pico novo-documento.txt. Os comandos disponíveis neste editor são apresentados numa barra na zona inferior do ambiente de trabalho. Por exemplo para gravar usar CTRL+O e para sair usar CTRL+X. b. O comando grep (global regular expression print) permite pesquisar conteúdos utilizando expressões regulares. Para pesquisar uma palavra dentro de um documento usar grep <palavra> <documento>. Estudar o que permitem as opções c e v. c. Os comandos sed e awk permitem usar expressões regulares para fazer alterações no conteúdo de ficheiros. d. O comando sort permite ordenar os conteúdos de um ficheiro. Criar dois documentos, usando o editor pico, que contenham um número em cada linha ( numeros.txt ) e uma palavra em cada linha ( palavras.txt ). Experimentar ordenar os conteúdos com sort palavras.txt e sort n numeros.txt. Experimentar apenas sort numeros.txt. Interpretar o resultado obtido. Reparar que a combinação cat numeros.txt sort produz o mesmo resultado.
e. Com o comando uniq é possível eliminar linhas duplicadas. Experimentar o comando num ficheiro com linhas repetidas uniq < tem_linhas_repetidas.txt. Repara que a combinação cat tem_linhas_repetidas.txt uniq produz o mesmo resultado. f. O comando tr permite substituir termos por outros termos. Por exemplo, o comando tr a A < ficheiro_qualquer.txt permite substituir todos os a em A ; o comando tr 2004 2005 < ficheiro_qualquer.txt permite substituir todos os 2004 em 2005 ; o comando tr a-z A-Z < ficheiro_qualquer.txt substitui todas as letras minúsculas por maiúsculas. Reparar que os resultados destes comandos não são armazenados, apenas redireccionados para a saída. g. O comando fmt permite formatar automaticamente um ficheiro de texto. Experimentar com vários exemplos. 5. Expressões regulares Expressão Regular Descrição Exemplo termo Encontra o termo. ab encontra ab. Operador ou. a b encontra a ou b.. Encontra qualquer caracter. a.b encontra aab, abb, acb, adb,... * ^ $ [ ] Entra zero ou mais ocorrências do caracter anterior. Encontra apenas padrões no início de uma linha. Encontra apenas padrões no final de uma linha. Permite definir conjuntos de valores. a*b encontra b, ab, aab, aaab,... ^ab encontra apenas os casos onde ab ocorre no início da linha. ab$ encontra apenas os casos onde ab ocorre no final da linha. a[1-3]b encontra a1b, a2b e a3b. [ab ba] encontra ab ou ba. Estas regras podem ser combinadas. Exemplo: a expressão regular ^a[1-8]*bz$ encontra todas as ocorrências cuja linha comece por a, seja seguida de um número não limitado de algarismos entre 1 e 8 e termine a linha com bz. Escreva expressões regulares que permitam: a. Identificar todos os exames de 1 a 9, quando os documentos são nomeados com a seguinte estrutura ExameN.pdf. R: Exame[1-9].pdf b. Identificar todos os documentos do tipo PDF que começam por uma volgal. R: [aeiou].*\.[pdf PDF] c. Identificar todos os documentos do tipo PDF ou DOC que contêm o termo CRC no nome. R:.*[crc CRC].*\.[pdf PDF doc DOC] 6. Informações do sistema a. O comando uname permite saber informações sobre o sistema que se está a usar. Experimentar uname, uname sr, uname a.
b. Com o comando df é possível saber informações sobre o sistema de ficheiros disponível. c. O comando du permite obter informações sobre a utilização do disco. Experimentar du, du h e du a. Interpretar os resultados usando a ajuda. É possível saber quais os ficheiros/pastas que ocupam mais espaço com du a sort n. d. O comando file permite saber qual o tipo do conteúdo de um ficheiro. Experimentar file ficheiro_qualquer.tipo_qualquer com vários tipos diferentes e interpretar os resultados. e. O comando ps permite saber quais os processos que estão a ser executados. Experimentar ps, ps a, ps ef, ps ef -forest. Interpretar os diferentes resultados. 7. Construção de scripts. a. Os scripts permitem reunir numa única instrução um conjunto de comandos. Experimentar criar um ficheiro, usando o pico, com o seguinte texto: #! /bin/sh #Este é o meu primeiro script. echo O meu primeiro script! echo Hoje é date echo O conteúdo desta pasta é: ls -la Executar o script usando sh meu-script.sh. b. Para tornar o script executável, atribuir as permissões correctas com o comando chmod 755 meu-script.sh. Executar com.\meu-script.sh. c. Criar novo script com o seguinte conteúdo: #! /bin/sh ls -lah --color Gravar com o nome meu-ls, alterar as permissões e experimentar. 8. Utilização do serviço de correio electrónico. a. É possível enviar mensagens de correio electrónico directamente a partir do interpretador de comandos. Exemplo: mail s Assunto Aqui endereco@destino.com < ficheiro_a_anexar.txt. b. Para escrever uma mensagem com texto usar apenas mail <endereço>, escrever o assunto, carregar ENTER, escrever o corpo e usar CTRL+D para terminar.
9. Consolidação e compressão de ficheiros e directórios. a. O comando tar (tape archive) permite arquivar um conjunto de ficheiros num único. Útil para envio ou arquivo de múltiplos ficheiros. Experimentar tar cvf arquivo1.tar palavras.txt numeros.txt e tar cvf arquivo-txt.tar *.txt. b. Para extrair o conteúdo de um arquivo, usar tar xvf arquivo1.tar. Para extrair conteúdos específicos, usar tar xvf arquivo1.tar *palavras*. c. Para ver o conteúdo de um arquivo, sem extrair, usar tar tvf arquivotxt.tar. d. Existem vários comandos para a compressão de ficheiros ou directórios (compress, gzip, zip). Para comprimir um ficheiro usar gzip arquivo1.tar. Fazer ls la arquivo1*. Para descomprimir usar gunzip arquivo1.tar.gz. 10. Comandos úteis. a. Os comandos ispell (correcção interactiva) e look (pesquisa de termos) permitem ajudar na correcção de textos. Experimentar look talk, look student, look web. b. O comando tidy permite limpar conteúdo HTML/XHTML/XML. Descarregar um ficheiro da Internet com o comando wget e utilizar o comando tidy <ficheiro>.