Anda di halaman 1dari 3

INTRODUO AO SISTEMA OPERACIONAL LINUX -- AULA 6

Exerccios
---------1) O comando 'seq' produz uma seqncia de nmeros segundo as opes
dadas ao comando. Escreva um lao com o 'for' e 'seq' que executa
sete vezes o comando echo. Pista: use a primeira forma do 'for'; veja
"Command Substitution" na pgina de manual do Bash
$(cmd) .
for I in $(seq 1 7) ; do

echo $I;

done

2) Veja "help for" e transforme sua resposta ao exerccio (1) na


verso com 'while' mostrada no "help".
declare -i I
(( I=0 ))
while (( $I < 7 )); do
echo $I
(( I=$I+1 ))
done
3) Voc mantm uma cpia de segurana do seu diretrio de trabalho no
sub-diretrio chamado zOLD. Acidentalmente, alguns arquivos com
sufixo ".tex" foram copiados de outro lugar para o diretrio de
trabalho e voc no sabe quais so os arquivos vlidos (mais recentes
e/ou maiores). Em desespero voc precisa verificar cada arquivo contra
sua cpia de segurana, conferindo as datas de criao e os tamanhos.
Veja se o comando abaixo resolve seu problema.
cd zOLD
for F in *.tex ; do
echo -e "\n\n\n$F\n"
if [ ./$F -nt ../$F ] ; then
/bin/ls -lf $F ../$F
read Y
fi
done

## para que serve este?


## para que serve este?

4) Melhore o comando acima para que ele avise se algum dos arquivos
existe num diretrio, mas no no outro.
(cd zMatAux ; ls *.tex | sort) >X1
ls *.tex | sort | diff - X1

# alternativa sem o for

5) O professor pede ao administrador de sistema que crie um diretrio


para cada aluno da especializao, no diretrio em que residem as
pginas web. As restries que o administrador deve obedecer so:
(i) no criar diretrios que j existem;
(ii)no deixar nenhum aluno de fora;
(iii)os diretrios devem pertencer ao usurio;
(iv) diretrios devem estar com as permisses corretas. Escreva um
programa que cria os diretrios conforme descrito acima, completando o
esqueleto abaixo.
Note que voc no tem autoridade para criar diretrios em /home e
nem

mudar as permisses de diretrios de outros usurios. Ao invs de


executar os comandos, mostre o echo dos comandos: echo "mkdir $D".

for A in "todos em /home/espinf/" ; do


D=/home/html/inf/$A
if "$D nao existe" ; then
echo "mkdir $D"
echo "chown xxx:yyy $D"
# troque xxx, yyy, zzz por
valores
echo "chmod zzz $D"
#
adequados
fi
done
cd /home/espinf/
for A in * ; do
D=/home/html/inf/$A
if [ ! -d $D ] ; then
echo "mkdir $D"
echo "chown $A:espinf $D"
echo "chmod 700 $D"
fi
done
Exerccios com SED
-----------------Salve a matriz abaixo num arquivo chamado X:
--corte
1 2 3 4
6 7 8 9
a b c d
f g h i
k l m n
2 7 b g
4 9 d i
--corte

aqui-5
0
e
j
o
l
n
aqui--

Para completar os exerccios abaixo, use o seguinte comando como


modelo:
cat X | sed -e 's/xxx/yyy/'
1) Troque todas ocorrncias de 4 por 9.
-e 's/4/9/g'

2) Troque todas as ocorrncias de "l m n" por "x p t".


-e 's/l m n/x p t/g'
3) Troque as ocorrncias de n por N, somente nas linhas com k.
-e '/k/ s/n/N/g'
4) Remova as linhas que iniciam com nmeros pares.
-e '/^[02468] /d'
5) Mostre somente o terceiro elemento de uma linha que comea com uma
letra.
sed -n -e '/^[a-z] / s:^\(. .\) \(.\) \(. .\):\2:p
6) Mostre somente a primeira e a segunda colunas.
sed

-n -e 's:^\(. .\) \(. . .\):\1:p'

7) Mostre somente a primeira e a segunda colunas, trocando as duas.


sed

-n -e 's:^\(.\) \(.\) \(. . .\):\2 \1:p'

8) Troque por Z o terceiro elemento da cada linha que comea com uma
letra.
sed

-n -e 's:^\(. .\) \(.\) \(. .\):\1 Z \3:p'


Use 5 agrupadores no "padrao".

sed

-n -e 's:^\(.\) \(.\) \(.\) \(.\) \(.\):\1 \2 Z \4 \5:p'

--- EOF --Autor: Roberto Hexsel

Anda mungkin juga menyukai