CI066 - Oficina de Programação
Laboratório 10
Prof. Armando Luiz N. Delgado
- Copie o diretório ~ci066/LabNum7 para seu diretório
de login.
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.
- Retorne um status de 0 (zero) se o argumento do
script for sim ou yes e 1 caso contrário.
Considere neste exercício que as variantes s, S,
SIM, Sim, y, Y, YES,
Yes são todas aceitas como sim.
Solução
- Remova do arquivo de telefones do Laboratório 7 a pessoa cujo
sobrenome é passado como argumento do script. Caso não
exista pessoa com o sobrenome indicado, o script se encerra
com status 1 (um), avisando antes ao usuário. Caso haja
mais de uma pessoa com o mesmo sobrenome, o script deve
obter do usuário confirmação de remoção para cada pessoa encontrada.
Soluções: 1, 2, 3, 4
- Liste os usuários logados há mais de 1 (um) dia. Se não houver
usuários nestas condições, exiba uma mensagem indicando tal situação.
DICA: Verifique como date(1), who(1),
last(1) ou w(1) e grep(1) podem ser úteis.
Soluções: 1, 2, 3
- Liste os usuários logados por um tempo menor ou igual ao
único argumento numérico do script. Este argumento pode
indicar dias (sufixo d), horas (sufixo h) ou
minutos (sufixo m). Caso nenhum sufixo seja usado, o
argumento indica o tempo em horas.
Por exemplo, o argumento 10d indica 10 dias, 3h ou
simplesmente 3 indica 3 horas, e 20m indica 20
minutos.
DICA: Use date(1) (opções -d e formato
%s) e expressões aritméticas (seções Arithmetic
Expansion e ARITHMETIC EVALUATION em bash(1)).
Soluções: 1,
2,
3,
4,
5
- Para os usuários ainda logados, mostre na tela o número de horas
e minutos que este usuário está logado no sistema. O
usuário é indicado pelo seu login no argumento do
script. Se o usuário não está logado, o
script deve mostrar na tela uma mensagem indicando tal fato.
DICA: Use w(1) ou who(1).
Soluções: 1, 2
- Renomeie um arquivo indicado no 1o
argumento de forma a remover do final do nome original os caracteres
indicados no 2o argumento. Por exemplo,
comando teste1teste teste deve renomear o arquivo
teste1teste para teste1. Se o arquivo não existir,
exiba uma mensagem indicando tal fato SEM EXECUTAR o comando de
renomeação.
DICA: Não use basename(1). Veja a seção
Parameter Expansion em bash(1).
ASSUNTOS DAS PRÓXIMAS AULAS:
- Expressões aritméticas.
- Novas estruturas de controle de fluxo: case...esac
- Escopo de variáveis de ambiente. Mecanismos de source;
- Lendo arquivos
Armando Luiz Nicolini Delgado
2008-10-06