CI066 - Oficina de Programação
Laboratório 09
Prof. Armando Luiz N. Delgado
- Copie o diretório ~ci066/LabNum7 para seu diretório
de login.
- Crie o diretório ~/bin. A partir de agora, todos os
scripts shell produzidos nesta disciplina devem ser criados
neste diretório.
- 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.
- Inicie outra sessão de shell e verifique se o valor de
PATH está correto.
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.
- 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.
- Verifique se um usuário, cujo login é obtido
interativamente, está logado.
- 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).
- 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?
- 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).
- Faça um script shell
chamado fim_sessao que:
- Termina todos os SEUS processos associados ao seu navegador
predileto (e.g., firefox) e ao seu editor preferido (e.g.,
emacs);
- Remove os arquivos da cache do firefox (
/.mozilla/firefox/*.default/Cache/*);
- Remove o histórico de navegação do firefox (
/.mozilla/firefox/*.default/history.*);
- Remove arquivos temporários: core, *.~* e
*.bak;
- Defina um alias que ao ser executado, chame o script
fim_sessao criado no exercício 6 e em
seguida execute logout do sistema.
- 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).
ASSUNTOS DAS PRÓXIMAS AULAS:
- Status de retorno de processos;
- Controle de fluxo e interação em scripts shell;
- Redirecionamento de E/S para /dev/null: quando isto é útil;
- Operações aritméticas e lógicas.
Armando Luiz Nicolini Delgado
2008-10-06