CI066 - Oficina de Programação
Laboratório 09

Prof. Armando Luiz N. Delgado

Laboratório 09

Preliminares

  1. Copie o diretório ~ci066/LabNum7 para seu diretório de login.

  2. Crie o diretório ~/bin. A partir de agora, todos os scripts shell produzidos nesta disciplina devem ser criados neste diretório.

  3. No arquivo ~/.bashrc, altere o valor da variável de ambiente PATH de modo que o diretório criado no item anterior seja o primeiro diretório a ser investigado na busca por um comando.

  4. Inicie outra sessão de shell e verifique se o valor de PATH está correto.

Programação shell - scripts

Crie scripts shell que implementem uma solução para os exercícios abaixo.

ATENÇÃO: Cada script deve ser executado como se fosse um comando normal do UNIX.

  1. Dado um nome (não é login) de usuário passado como argumento, imprima uma frase indicando qual o caminho completo de seu diretório de login.

  2. Verifique se um usuário, cujo login é obtido interativamente, está logado.

  3. Remova do arquivo LabNum7/telefones.txt a pessoa cujo sobrenome é obtido do usuário interativamente. O script deve exibir um prompt indicando ao usuário o momento em que este sobrenome deve ser fornecido.

    DICA: Lembre-se do comando interno read em bash(1).

  4. Execute o exercício 3 em background. Como fazer para o script concluir adequadamente? Que alteração deve ser feita neste script para que o sobrenome da pessoa a ser removida seja fornecido como argumento na linha de comando?

  5. Termine todos os seus processos que estejam associados a um nome de comando, passado como argumento.

    DICA: DICA: Nas aulas anteriores já vimos como capturar a STDOUT de um comando para ser inserida dentro de uma linha de comando. Para isto, usa-se $(comando) ou crase como delimitador:

              CMDS=`ls ~/bin`
              ls -l `cat ~/arqs.txt`
              kill $(ps xu | egrep firefox | cut -c10-14)
    

    ATENÇÃO: É proibido usar killall(1) ou pkill(1).

  6. Faça um script shell chamado fim_sessao que:
    1. Termina todos os SEUS processos associados ao seu navegador predileto (e.g., firefox) e ao seu editor preferido (e.g., emacs);
    2. Remove os arquivos da cache do firefox ( /.mozilla/firefox/*.default/Cache/*);
    3. Remove o histórico de navegação do firefox ( /.mozilla/firefox/*.default/history.*);
    4. Remove arquivos temporários: core, *.~* e *.bak;

  7. Defina um alias que ao ser executado, chame o script fim_sessao criado no exercício 6 e em seguida execute logout do sistema.

  8. Acrescente ao script fim_sessao criado no exercício 6 a geração de um relatório chamado Espaco.log que contém uma lista com todos os diretórios de sua área juntamente com o espaço ocupado por cada um. Esta lista deve estar ordenada por tamanho. Não se esqueça de incluir os diretórios cujo nome começa com um ponto (e.g., ~/.mozilla).

Conclusões

ASSUNTOS DAS PRÓXIMAS AULAS:



Armando Luiz Nicolini Delgado
2008-10-06