Sistemas Operacionais e Introdução à Programação Redirecionamentos Editor vi 1
Objetivos: 1. Exercitar o uso de redirecionamentos de entrada e saída padrão 2. Usar o editor de texto vi 2
Entrada e saída padrão: Todo processo Unix possui três arquivos previamente abertos: i) Entrada padrão: comumente associado ao teclado (terminal) ii) Saída padrão: normalmente associado à tela (terminal) iii) Saída de erros padrão: também normalmente associado à tela (terminal) saída de erros padrão entrada padrão Processo Unix saída padrão 3
Entrada, saída ou saída de erros padrão podem ser redirecionados: Redirecionamento de entrada padrão: processo recebe dados de outra fonte que não o terminal Ex: obtém de um arquivo ou de outro processo via um pipe Redirecionamento de saída padrão: processo escreve dados em outro destino que não o terminal Ex: escreve dados em um arquivo ou envia a outro processo via um pipe 4
Redirecionamento de saída padrão: Usa-se o símbolo > ao final da linha de comando no prompt do shell para redirecionar a saída para um arquivo Ex: redirecionando para o arquivo ls.txt a saída do programa ls: 5
Redirecionamento de saída padrão: Usa-se o símbolo após a especificação do programa a ser executado, para redirecionar sua saída para um pipe Ex: redirecionando para o programa wc a saída do programa ls: ls -l *pdf wc -l conta quantos arquivos têm nome que termina com pdf ls -l *pdf mostra arquivos cujos nomes terminem com pdf wc -l conta as linhas lidas da entrada padrão 6
Redirecionamento de saída padrão: exercícios i) Concatene vários arquivos de texto, e usando redirecionamento de saída padrão grave o resultado em um novo arquivo. ii) Execute o comando ps > ps.txt. Veja o conteúdo do arquivo resultante ps.txt. Execute novamente ps > ps.txt, e veja como ficou o arquivo ps.txt. O que você pode concluir quanto ao redirecionamento de saída para um arquivo já existente? iii) Repita o procedimento do ítem ii, porém executando primeiro ps > ps.txt e depois ps >> ps.txt. Qual foi a diferença? 7
Redirecionamento de saída padrão: desafio iv) Concatene todos os arquivos com extensão.txt ou.ctxt contidos no arquivo tar docs.tar.bz2, salvando-os em um arquivo chamado tudo.txt. Redirecionamento de saída de erros padrão: A saída de erros padrão pode ser redirecionada para um arquivo acrescentando-se 2>&1 ao final da linha de comando: 8
Redirecionamento de entrada padrão: Usa-se o símbolo < ao final da linha de comando no prompt do shell para redirecionar a entrada para um arquivo Ex: usando o arquivo ls.txt como entrada para o programa grep: 9
Extras: utilitários head, tail e sort head: mostra as N primeiras linhas de um arquivo tail: mostra as N últimas linhas de um arquivo (ou a partir da enésima linha) sort: ordena alfabeticamente ou numericamente as linhas de um arquivo 1
Extras: utilitários head, tail Seja o arquivo arquivo.txt: 1
Extras: utilitários head, tail Resultado de head -5 arquivo.txt: Resultado de tail -5 arquivo.txt: 1
Extras: utilitários head, tail Resultado de tail +5 arquivo.txt: Desafio: Usando uma combinação de head e tail mostre as linhas de número 9 a 12 1
Extras: utilitário sort Resultado de sort frutas.txt: sort frutas.txt Desafio: liste alfabeticamente todos os arquivos contidos em docs.tar.bz2 1
Extras: utilitário sort para ordenamento numérico Resultado de sort -n sizes.txt: sort -n sizes.txt 1
Editor vi: Editor clássico encontrado em praticamente todos Unix (o que inclui o Linux) Operação toda em modo texto (independe do modo gráfico) Dois modos de operação: Modo de comando: podem-se especificar comandos de edição e arquivos Modo de inserção: pode-se acrescentar texto 1
Editor vi: iniciando... Inicia-se o editor ao se executar vi na linha de comando. Ex: vi README.txt 1
Editor vi: iniciando... Ao se iniciar o vi entra-se em modo de comando. Para entrar em modo de inserção deve-se digitar i (insert) ou a (append): 1
Editor vi: iniciando... Em modo de inserção pode-se navegar usando-se as teclas de cursor... isto no vim, versão incrementada do vi. No vi clássico somente se consegue navegar em modo de comando! Para acrescentar texto, entra-se em modo de inserção e digita-se normalmente. Para voltar a modo de comando tecla-se ESC 1
Editor vi: comandos... Comandos básicos (modo de comando): 0: vai para o início da linha $: vai para o final da linha gg: vai para a primeira linha G: vai para a última linha n: vai para a linha n (n é um número) w: vai para a próxima palavra b: vai para a palavra anterior 2
Editor vi: comandos... Comandos básicos (modo de comando): x: apaga um caractere à direita do cursor X: apaga um caractere à esquerda do cursor dd: apaga-se uma linha inteira D: apaga do cursor até o final da linha dw: apaga até a próxima palavra dfs: apaga até a próxima ocorrência do caractere s a: entra-se em inserção uma posição à frente do cursor i: entra-se em inserção uma posição antes do cursor 2
Editor vi: comandos... Comandos básicos (modo de comando): rc: substitui o caractere sob o cursor pelo caractere c cwnova: substitui a palavra a partir do cursor pela palavra nova /palavra: busca por palavra, e nela posiciona o curso n: repete a busca para a frente (encontra próxima ocorrência) N: repete a busca para trás (encontra ocorrência anterior) :s/texto/novo/n: substitui texto por novo nas próximas n linhas 2
Editor vi: comandos... Comandos básicos (modo de comando): :w : grava o arquivo :w um_arquivo: grava o conteúdo no arquivo um_arquivo :w um_arquivo: grava o conteúdo no arquivo um_arquivo, sobrescrevendo-o caso exista :r um_arquivo: lê um_arquivo e insere seu conteúdo a partir do cursor :r!comando : executa comando no shell, e insere seu resultado a partir do cursor :q : sai do vi (termina o editor) :q! : sai do vi, descartando as modificações 2
Editor vi: exercícios i) Crie e edite um arquivo contendo seus dados pessoais, de forma que possam ser usados em sua assinatura de email. Salve-o com nome signature.txt. ii) Edite o arquivo README.txt, que está contido em docs.tar.bz2. Logo após suas duas primeiras linhas (título de seu conteúdo), adicione uma linha com seu nome, matrícula e turma. Salve o arquivo modificado. iii) Em README.txt acrescente a data de hoje após a última linha. iv) Em README.txt remova a 2a questão. Apague também a linha em branco logo a seguir. Em seguida renumere as próximas questões, para que fiquem na sequência correta. 2
Editor vi: exercícios v) Em README.txt localize as ocorrências da palavra diretorio, e substitua por subdiretorio. Salve o arquivo modificado. vi) Em README.txt localize a 3 a ocorrência da palavra diretorio, e remova-a. Localize então a ocorrência imediatamente anterior, e substitua por maiúsculas. vii) Em README.txt, acrescente o resultado da listagem do diretório docs logo após a questão 5. viii) Salve o arquivo resultante com o nome README2.txt. 2