MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CAMPUS SÃO JOSÉ – SANTA CATARINA Sistemas Operacionais Redirecionamentos e Editor vi Prof. Tiago Semprebom [email protected] www.sj.ifsc.edu.br/~tisemp Objetivos: 1. Exercitar o uso de redirecionamentos de entrada e saída padrão. 2. Usar o editor de texto vi. 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 Entrad a padrão Processo UNIX saída padrão Entrada e saída padrão: 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 Redirecionamento de saída • 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: 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 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 ? 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: 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: 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 Utilitários head, tail • Seja o arquivo arquivo.txt: Utilitários head, tail: • Resultado de head -5 arquivo.txt: • Resultado de tail -5 arquivo.txt: 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 Utilitário sort: • Resultado de sort frutas.txt: sort frutas.txt • Desafio: liste alfabeticamente todos os arquivos contidos em docs.tar.bz2 Utilitário sort: Extras: utilitário sort para ordenamento numérico Resultado de sort -n sizes.txt: sort –n sizes.txt Editor vi: • Editor clássico encontrado em praticamente todos 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 edição e arquivos – Modo de inserção: pode-se acrescentar texto Editor vi: • Inicia-se o editor ao se executar vi na linha de comando. Ex: vi README.txt Editor vi: • 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): Editor vi: • 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 Editor vi: comandos básicos • 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 Editor vi: comandos básicos – – – – – – – – 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 Editor vi: comandos básicos – 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 Editor vi: comandos básicos – 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