Ficha Pratica no 1 Programacao III Paul Crocker e Simao Melo de Sousa Departamento de Matematica/Informatica da UBI 14 de Fevereiro de 2000 Sessao Unix Exercicio 1: (Abertura de uma sessao Unix ) Abra uma sessao Unix indicando ao seu terminal o seu username e a sua password. Resolucao: Exercicio 2: (Senha) Mude a sua password. Resolucao: Exercicio 3: (Who, Rusers) Quantos utilizadores estao utilizando a sua maquina? a rede? Resolucao: Exercicio 4: (Quem sou eu? ) Como verificar quem e o proprietario da sessao Unix activa? Resolucao: Exercicio 5: (ls) Qual e o conteudo do direct'orio de trabalho? Resolucao: Exercicio 6: (Agenda) qual e a hora e a data actual usada no sistema? Quais sao as opcoes do commando usado? exemplifique o uso do comando cal. Resolucao: Exercicio 7: (Agenda Bis) Peca ao computador que verifique o dia em que nasceu. Qual e a particularidade do ano 1752? Resolucao: Exercicio 8: (finger ) Qual e o estado e a informacao p'ublica que disponibiliza? Como mudar essas informacoes? Resolucao: Exercicio 9: (Procura de ajuda) Descreva os comandos echo, head, tail, diff, wc, chfn, chsh. Resolucao: Sistema de Ficheiros Unix Exercicio 10: (Direct'orios) Crie na sua ''home directory'' dois direct'orios chamados respectivamente publico e privado. Desloca­se para o direct'orio publico, crie um direct'orio tmp. Remove o direct'orio tmp. Resolucao: Exercicio 11: (Ficheiros) 1. executa os comandos seguintes man ls ? ls.txt e man wc?? ls.txt. Qual e o resultado? vizualiza o resultado com os comandos cat e more. 2. Usando o comando echo e a redireccao, crie um ficheiro com o seu nome contendo o seu numero de estudante. 3. Faca uma copia desse ficheiro para a sua home directory. Move o ficheiro para '' ~ /privado''. Quais sao os comandos para verificar a localizacao do ficheiro criado e para verificar o conte'udo do ficheiro (ou seja, como usa­los). Resolucao: Exercicio 12: (pwd) Em que direct'orio esta? Resolucao: Exercicio 13: (Permissoes) Tornar o direct'orio publico p'ublico (escrita e leitura para o grupo, e leitura s'o, para os outros), o direct'orio privado privado. Tenta deslocar­se para o direct'orio privado de um colega seu, tenta copiar para esse direct'orio o ficheiro com o seu nome. Resolucao: Exercicio 14: (Caminho relativo, Caminho absoluto) Como diferenciar dois ficheiros hom'onimos? Resolucao: Exercicio 15: (Hard links, symbolic links) Que faz o comando ln? Quais sao as vantagens de uso de um tal comando? Faca um link de um ficheiro presente no seu direct'orio privado para a sua home directory. Resolucao: Processos Exercicio 16: (Pipes) Como ver o conte'udo de um ficheiro da linha i ate a linha j? Resolucao: Exercicio 17: (Lista de processos) Como se usa o comando ps? De a lista de todos os processos que correm e dos quais o root e proprietrario? Resolucao: Exercicio 18: (Filtros & Pipes) De a lista ordenada e pagina por pagina de todos os processos activos na sua maquina. Resolucao: Exercicio 19: (Redireccao & Filtros) Crie um ficheiro com a lista completa e ordenada de todos os ficheiros da sua home directory. Resolucao: Commandos UNIX Exercicio 20: (Correio electr'onico) Envie um mail ao seu vizinho, leia o mail recebido, salve o mail recebido. Edita o ficheiro .mailrc. Resolucao: Exercicio 21: (Comandos ' uteis) Exemplifique o uso dos comandos seguintes: clear, du, df, which, whereis, tar, gzip, gunzip, lp, lpstat, cancel, alias, find, awk. Resolucao: Redireccao do I/O Exercicio 22: (stdin e stdout) Experimente a seguinte sequencia de comandos no seu terminal e de uma explicacao do que esta, a cada passo, acontecendo. (O comando ctrl­d indica ao sistema que se atingiu o fim do input (ou seja o caracter eof=end of file) ciunix? cat algumas palavras ctrl­d ciunix? cat ? gato Miau, brrrr ctrl­d ciunix? cat gato ciunix? cat ?? gato miau ctrl­d ciunix? cat gato ciunix? cat ! gato Resolucao: Exercicio 23: Explique a diferenca entre os comandos who --- sort e who ? sort Resolucao: Exercicio 24: Descreve e explique o que acontece quando se executa o comando wc, mal escrito, seguinte: ciunix? wcll ? temp Resolucao: Exercicio 25: Explique o contedo do ficheiro criado pelo comando: ciunix? ls ? ls.out Resolucao: Exercicio 26: Explique o output do comando: ciunix? wc temp ? temp Resolucao: Exercicio 27: Crie os seguintes ficheiros com, por exemplo, o comando touch. cap1.txt cap2.txt cap3.txt cap4.txt cap?.txt 1. Faca uma listagem dos ficheiros que comecam com ''cap'' 2. Faca uma listagem dos ficheiros ''cap1'', ''cap2'' e ''cap3'' (use o modelo []) 3. Faca uma listagem apenas dos ficheiros cujo nome e de 4 letras, que comecam por ''cap'' que tem por extensao ''txt''. 4. Apagar os ficheiros que seguem o padrao ''cap?.txt''. Resolucao: Ficheiros Exercicio 28: Leia a pagina de ajuda on­line do comando ls. Resolucao: Exercicio 29: Quais sao as opcoes e uso do comando cat. Introduza texto no ficheiro cap1.txt, incluindo varios ''tabs'' e ''newlines''. Execute a seguir os seguintes comandos e explique o que acontece. cat cap1.txt cat ­t cap1.txt od ­c cap1.txt od ­cb cap1.txt Resolucao: Exercicio 30: Faca uma listagem de todos os ficheiros do seu direct'orio actual ( ls ­a ). Examine o ficheiro do direct'orio (o ficheiro de nome ''.'') com o comando od ­cb . (od = octal dump. Faca um man od para mais informacao.). Explique o output deste comando. Resolucao: Exercicio 31: Quais sao as permissoes do ficheiro ''.'' (ls ­ld )? Sera que se consegue executar um comando do genero who ? . ou who ? ..? Explique. Resolucao: Exercicio 32: Crie um link simb'olico e um link hard ao ficheiro ''cap1.txt'' no mesmo direct'orio deste. A seguir faca uma listagem dos ficheiros usando os seguintes comandos: ls ­l e ls ­i. Explique o output em relacao aos i­nodes e links. Resolucao: Pipes e os Filtros Grep, Sed e Awk Exercicio 33: Juntando os comandos who e wc com um pipe crie um linha de comando que escrevera o nmero actual de pessoas ''logged on''. 1. Escreva esta linha num ficheiros chamado nu e a seguir 'execute'' este ficheiro (se a execucao falhar, verifique as permissoes do ficheiro). 2. Verifique que o seu caminho (path) inclua o seu direct'orio bin ~aluno/bin. Fazer isto examinando a variavel do ambiente PATH com o comando echo $PATH. 3. Mude o ficheiro nu para o seu direct'orio bin. Ainda consegue executar este ficheiro ? Porque ? Resolucao: Exercicio 34: A criacao do ficheiro nu podia ter passado pelo comando echo ''who --- wc ­l'' ? nu. (i) Verifique (ii) O que aconteceria se o comando for escrito sem as aspas ? Resolucao: Exercicio 35: Partindo do seu direct'orio raiz e usando os comandos ls ­R (opcao R =) Recursividade) e grep, faca uma listagem de todos os seus ficheiros executaveis (os ficheiros que tem uma permissao a ''x''). Resolucao: Exercicio 36: Partindo do direct'orio raiz da sua area e usando os comandos ls e grep, faca uma listagem dos seus ficheiros cujos nomes nao contem qualquer nmero (ou seja, s'o letras). Resolucao: Exercicio 37: Utilize os comandos finger, grep e sort para obter uma listagem ordenada dos utilizadores ligados ao servidor sem a primeira linha do output do finger. Resolucao: Exercicio 38: Escreva algum texto nos ficheiros ''cap?.txt''. 1. Usando o comando sed substitua a letra ''o'' por 'a'' nos ficheiros considerados. 2. Tente fazer a mesma coisa com o comando tr. 3. Crie um script com os comandos da primeira al'inea. Resolucao: Exercicio 39: Neste exercicio vamos utilizar o complet'issimo comando awk usando como input o output dos comandos ps, who e finger. 1. Escolha alguns campos destes comandos, e seleciona­los para o output, usando o awk. 2. Um dos campos do comando ps ­auxw e o % tempo cpu. Usando awk mande para o output a identificacao do processo que esta a utilizar o valor maximo. 3. Invente os seus pr'oprios exemplos! Resolucao: Processos Exercicio 40: Qual e a diferenca entre as tres seguintes linhas de comando ciunix? sleep 15; echo ''hora do cha'' ciunix? sleep 15 & ; echo ''hora do cha'' ciunix? (sleep 15; echo ''hora do cha'')& Resolucao: Exercicio 41: Executa o comando o comando sleep 120 &. Faca, a seguir, uma listagem dos seus processos (ps e ps ­axw) e mate (kill ... ) o seu processo sleep 120. Resolucao: Exercicio 42: 1. Faca um link simb'olico do ficheiro cicloslink ao ficheiro ~crocker/prog3/ciclos. 2. Examine o contedo e explique. 3. Executa o programa com : cicloslink 1. Termine o programa premindo ctrl­c, faca ps. Volte a executar cicloslink 1 e prima, desta vez, em ctrl­z e faca ps. Qual a diferenca ? 4. Se cicloslink ainda esteja a correr, executa o comando fg. Explique o que acontece. 5. Parar o programa cicloslink 1 com ctrl­z e executa o comando cicloslink 2 seguido por ctrl­z e cicloslink 3 seguido por ctrl­z. 6. Examine o output de ps ­lw e explique os campos PID e PPID. 7. Examine o output do comando jobs. 8. Experimente o comando fg %1 ou fg %2 etc... Explique. 9. O comando bg poe a correr um processo parado em ''background''. Experimente com um dos seus processos parados. Tente parar um processo da sua escolha sem usar kill ­9. 10. O que acontece ao colocar um processo a correr em fg e ao premir, de seguida, ctrl­z? 11. Qual e o PID do seu ''login shell'' ? qual e o programa e o dono do pai deste processo ? Resolucao: O comando find Exercicio 43: Localize, a partir do seu direct'orio raiz, 1. Os ficheiros com mais de 10 blocos ? 2. Os ficheiros com menos de 10 blocos ? 3. Os ficheiros cujos nome contem ''cap'' 4. Os ficheiros cujas extensoes sao .txt Resolucao: Exercicio 44: Crie, utilizando o comando touch, em varios subdirect'orios seus um ficheiro chamado core. 1. Localize, a partir do seu direct'orio raiz, estes ficheiros. 2. Apague estes ficheiros utilizando find e exec. Resolucao: Exercicio 45: Localize os seus ficheiros que tem: 1. um tempo de modificacao inferior a um dia 2. um tempo de acesso inferior a um dia. Resolucao: Exercicio 46: Invente mais tres exemplos de uso do comando find, ilustrar as opcoes (ou flags) exec e ­perm. Resolucao: