UFRJ/ECO/SI/2024 https://pater.web.cip.com.br/SI2024/exerclincon_alternativo.txt (este arquivo) ver tambem: https://pater.web.cip.com.br/SI2024/exerclincon.txt 1)Recapitulacao: SE AINDA NAO FEZ ISSO, instale uma Maquina Virtual no seu computador. CONSULTE: https://pater.web.cip.com.br/SI2024/preparando_instalacao_virtualbox_e_linux.pdf https://pater.web.cip.com.br/SI2024/VBox_Linux_InstalacaoInicial_parte01.pdf https://pater.web.cip.com.br/SI2024/VBox_Linux_InstalacaoInicial_parte02.pdf https://pater.web.cip.com.br/SI2024/instrucoes_complementares_VBox_fpc_pdftotext.pdf ______________________________________________________ Se quiser experimentar uma versao linux pre-instalada, pode baixar e associar diretamente um arquivo .vdi de disco virtual a uma maquina vazia criada no Virtual Box. Baixe alguma imagem de sistema linux pre-instalado das disponiveis em: https://www.osboxes.org/virtualbox-images/ ______________________________________________________ 2)Exercicio: experimentando a interface grafica da maquina virtual Linux instalada 2.1) Inicie ('start') a maquina linux ja instalada no VirtualBox e experimente um pouco com os menus; abra alguns aplicativos do menu 'Aplicativos' ('Applications'), como o editor de texto na opcao 'Acessorios', ou algum editor de imagem simples na opcao 'Graficos' ('Graphics'). 2.1.1) SE AINDA NAO FEZ ISSO, com a maquina linux iniciada, instale os 'Adicionais para convidado' (GuestAdditions) do VirtualBox. CONSULTE: https://pater.web.cip.com.br/SI2024/instrucoes_complementares_VBox_fpc_pdftotext.pdf 2.2) Crie e salve alguns arquivos na sua 'Pasta Pessoal' ('Home Folder'); voce pode acessar o conteudo da sua 'Pasta Pessoal' atraves do menu 'Locais' ('Places'). 2.3) Abra a url https://web.cip.com.br/pater/reprografia/consolidado09_05_12.txt 2.4) Experimente com codificacoes diferentes de caracteres. Por exemplo, no Firefox, aperte e selecione no menu superior 'Visualizar' > 'Codificacao de caracteres'. 2.4.1) Escolhendo a alternativa de menu "Unicode (UTF-8)", os caracteres acentuados do texto devem aparecer corretamente. 2.4.2)Veja também http://support.google.com/news/bin/answer.py?hl=pt-BR&answer=61689 ou, quando estiver experimentando com o prompt, a referencia http://linux.die.net/man/1/convmv, sobre o 'convmv', um conversor para varias codificacoes diferentes de caracteres. 2.6) Clicando com o botao direito do mouse na sua 'Pasta Pessoal' ('Home Folder'), selecione a alternativa 'Criar Novo Documento'>'Documento Vazio', escolha um nome para o novo arquivo texto que criou e abra o arquivo, clicando duas vezes sobre o icone do arquivo. 2.7) Volte ao texto do arquivo consolidado09_05_12.txt aberto no navegador, selecione tudo, copie, cole e salve (no arquivo criado no passo anterior). ________________________________________________________________________________________________ VEJA TAMBEM EXERCICIOS PARECIDOS EM https://pater.web.cip.com.br/SI2024/exerclincom.txt ________________________________________________________________________________________________ 3)Exercicio: usando o terminal de linha de comando (prompt, interpretador de comando, shell) 3.1) Abra uma janela de terminal no Linux que instalou. Procure no menu 'Applications' > 'Accessories' > 'Terminal' (ou no equivalente portugues, se for o caso). 3.11) Para o Ubuntu, voce pode usar as teclas de atalho para abrir um terminal. 3.2) Digite alguns comandos, opcoes, operadores e argumentos para adquirir familiaridade com o prompt. 3.2.1) Experimente digitar, nessa ordem: cd .. (cd espaco doispontos) [change directory para o diretorio pai (pai = dois pontos)] ls cd ~ (cd espaco til) [change diretory para o diretorio pessoal (~ = seu diretorio sob o /home) ] ls cd Desktop (cd 'Área de Trabalho' , com as aspas, para a versão em português) ls cd .. ls cd /home/seunomedeusuario/Desktop (ou entao, cd /home/seunomedeusuario/'Área de Trabalho') ls 3.2.2) As opcoes (com hifen) modificam o comportamento do comando ls -l (ele esse hifen ele : mostra detalhes de cada item) ls -a (ele esse hifen a : mostra os itens ocultos, com nomes começando por ponto) 3.2.3) Ecoando mensagens no terminal, digite echo echo eh o comando, e o que vem a seguir do comando eh o argumento do comando echo algumacadeiadecaracteres: os espaços tambem são considerados caracteres normais pelo comando echo echo nao eh recomendavel usar espaços ou letras acentuadas nos nomes de arquivos ou diretorios echo 'para pular linhas, comece com aspas e, depois de escrever a última palavra da linha, aperte ENTER ... continue na outra linha, aperte ENTER, e assim por diante, digitando aspas' apenas ao acabar echo por exemplo, 'Área de Trabalho' nao eh um bom nome de diretorio, pois tem espaços e letras acentuadas; aqui precisa estar entre aspas (simples ou duplas) ou echo ter cada letra especial (letras acentuadas e espacos) 'escapada' pela anteposicao de barra invertida (escape), assim echo \Área\ de\ Trabalho echo 'n o m e s c o m e s p a ç o s e (`^~) acentos precisam estar entre aspas para serem interpretados por alguns comandos como argumento único na linha de comando' echo ou terem suas letras especiais (espacos e acentuadas) escapadas pela anteposicao da barra invertida, assim echo n\ o\ m\ e\ s\ \ \ \ c\ o\ m\ \ \ e\ s\ p\ a\ \ç o\ s\ etc echo com aspas, o simbolo '>' eh tratado como um caracter comum; sem aspas, o caracter '>' redireciona a saida do comando (p.ex., para um arquivo) 3.2.4) Redirecionando o eco com o operador de redirecionamento: aqui sera criado um arquivo com o conteudo ecoado echo algumacadeiadecaracteres > nome_de_arquivo_texto echo o u t r a c a d e i a > 'n o m e nao recomendavel d e a r q u i v o' 3.2.5) Verifique o arquivo criado cat nome_de_arquivo_texto cat 'n o m e nao recomendavel d e a r q u i v o' 3.3) Digite para obter ajuda: man mkdir man ls man cat man echo 3.4) Crie um arquivo texto experimentando o editor simples 'nano', digitando no prompt: nano (ou entao) nano nomedearquivotextonovo 3.4.1) Quando abrir o editor, verifique as opcoes no rodape. Por exemplo, X (sai do editor) O (salva o conteúdo) 4)Criando um diretorio de trabalho pelo prompt Na janela de terminal (linux) crie um diretorio de trabalho. Logo apos o prompt meulogin@minhamaquina:~$ digite mkdir si2024 Isso cria um diretorio com o nome 'si2024' (atencao para nao deixar espacos entre o 'si' e o '2024') Verifique, digitando ls -l Mude para o diretorio que criou, digitando cd si2024 Crie um arquivo vazio com o nome 'ajuda' no diretorio atual ('si2024') digitando touch ajuda Coloque algum texto no arquivo 'ajuda' digitando no prompt echo '#PRIMEIRO ARQUIVO DE AJUDA - etc.etc.' > ajuda Verifique o que fez, digitando cat ajuda ou nano ajuda Para editar o texto no mini-editor 'nano' (veja as legendas no rodape da janela do 'nano') ----------------- Para cada comando desconhecido, verifique o modo de usar e a sua funcionalidade digitando man nomedocomando ----------------- ----------------------------------------------------------------------------------- 5)Exercicio: baixando e manipulando um arquivo texto desde a linha de comando ----------------------------------------------------------------------------------- 5.1) Inspecionando o arquivo texto Abra a url https://web.cip.com.br/pater/reprografia/consolidado09_05_12.txt Verifique se os caracteres acentuados e cedilha sao representados corretamente no navegador. Se for o caso, corrija a codificacao dos caracteres para UTF-8 (Unicode) no menu do navegador. Por exemplo, no Firefox, aperte sucessivamente as teclas para visualizar o texto como Unicode. Baixe o arquivo e salve com o mesmo nome no diretorio de trabalho 'si2024' que voce criou. Substituindo 'meulogin' pelo seu nome de usuario, mude para o diretorio de trabalho, digitando cd /home/meulogin/si2024 Baixe e liste o arquivo no terminal, digitando wget https://pater.web.cip.com.br/reprografia/consolidado09_05_12.txt cat consolidado09_05_12.txt (Quando estiver em outro diretório, digite o caminho completo cat /home/meulogin/si2024/consolidado09_05_12.txt para listar o conteudo do arquivo) Experimente head consolidado09_05_12.txt para ver as dez primeiras linhas do arquivo, ou tail consolidado09_05_12.txt para ver as dez últimas linhas do arquivo; ou ainda, para navegar com as setas pelo conteúdo, less consolidado09_05_12.txt [para sair do 'less', aperte a tecla ] [Certamente eh possivel abrir o arquivo em qualquer editor, assim como clicar sobre o icone do arquivo em uma interface grafica; mas nao eh o que estamos praticando agora.] Experimente visualizar apenas a coluna 19 do texto, digitando no terminal cut -f 19 consolidado09_05_12.txt Ou, para obter aquela saida em ordem alfabetica, acrescente um comando (filtro) 'sort' no encadeamento de linha de comando (pipe), assim cut -f 19 consolidado09_05_12.txt | sort (Note o simbolo 'barra vertical' entre os dois comandos: a saida do 'cut' sera tratada como entrada do 'sort') Experimente com outras colunas e verifique outras opcoes para cada comando, digitando 'man nomedocomando' no prompt. ----- "A interface grafica do usuário (GUI) apresenta alternativas visiveis para selecao e acionamento direto. O prompt de linha de comando armazena caracteres sucessivamente, até um que libera a sequencia para execucao." "A GUI aciona, ao clique do usuario, apenas uma funcionalidade de cada vez, indivisivel e inalteravel; a interface de linha de comando permite o redirecionamento da saida de um comando para a entrada de outro, ou para outros canais, produzindo naturalmente sequencias executaveis programadas pelo usuario diretamente no prompt. Alem disso, como sequencias de caracteres que sao, as linhas de comando podem ser modificadas por outros comandos antes de sua execucao." ----- Crie um nome alternativo ('link simolico', ou 'atalho') mais curto para 'consolidado09_05_12.txt', digitando ln -s consolidado09_05_12.txt ctxt Agora 'ctxt' eh um atalho para 'consolidado09_05_12.txt', e voce pode repetir o comando 'cut' que experimentou logo acima com um argumento (o nome do arquivo) bem menor, digitando cut -f 19 ctxt | sort Ou, mostrando apenas linhas nao repetidas, cut -f 19 ctxt | sort -u 5.2) Comparando o original com saidas manipuladas Digite cada um dos comandos abaixo, examine cada saida e constate as diferencas nos resultados: cat ctxt [ecoa o conteudo do arquivo 'ctxt' na saida padrao (na tela do terminal)] cut -f 19 ctxt [ecoa o 'campo'(coluna, 'field') 19 do arquivo 'ctxt' que esta organizado como uma tabela (matriz) com colunas separadas por tabulacoes] cat ctxt|cut -f 19 [o mesmo resultado anterior, filtrando a saida do comando 'cat' para a entrada do comando 'cut'] cut -f 19 ctxt | grep 'V' [localiza ('get regular expression') e ecoa as linhas com 'V' a partir do resultado do 'cut'] cut -f 19 ctxt | grep 'V.*' [ecoa as linhas que contem um 'V' seguido de 'zero ou mais ocorrencias'(*) de 'um caracter qualquer' (.)] cut -f 19 ctxt | grep -o 'V.*' [ecoa apenas ('only') o padrão buscado, um 'V' seguido de 'zero ou mais ocorrências'(*) de 'um caracter qualquer' (.)] cut -f 19 ctxt | grep -E ';|,| e ' [ecoa as linhas com o padrão buscado, uma expressão regular 'estendida' que representa as alternativas ';', ou ',' , ou ' e '] [note que as barras verticais no argumento do comando 'grep' não significam 'redirecionamento', mas o conectivo 'ou'] 5.2) Contando frequências cut -f 19 ctxt|sort|uniq -c [ecoa o número de linhas iguais consecutivas (uniq -c) da coluna 19 de 'ctxt' após classificada ('sort')] cut -f 19 ctxt|sort|uniq -c|less [permite navegar com as setas pelo resultado, redirecionado para o comando 'less': para sair do 'less' tecle a letra 'q'] 5.2) Contando frequências cut -f 19 ctxt|sort|uniq -c [ecoa linhas não repetidas contando o número de linhas iguais consecutivas ('uniq -c') da coluna 19 de 'ctxt' ('cut -f 19') classificada ('sort')] 5.3) Substituindo ('s') ou deletando ('d') cut -f 19 ctxt|sort|sed 's/[,;]/\n/g' [da coluna 19 classificada do arquivo 'ctxt', substituir o caracter ',' ou o caracter ';' pelo caracter pula-linha '\n' em todas as instâncias '/g'] cut -f 19 ctxt|sort|sed 's/ e /\n/g' [substituir a expressão ' e ' ('espaço' 'e' 'espaço') pelo caracter pula-linha '\n' em todas as instâncias '/g'] cut -f 19 ctxt|sort|sed 's/ by /\n/g' [substituir a expressão ' by ' pelo caracter pula-linha '\n' em todas as instâncias '/g'] cut -f 19 ctxt|sort|sed 's/^ //' [substituir o espaço no começo de uma linha ('^') pelo caracter vazio (apagar espaço que comece linha)] cut -f 19 ctxt|sort|sed '/[Vv]ários/d' [deletar ('d') a expressão 'Vários' ou 'vários' da saída do 'sort' anterior] 5.4) Experimentando encadeamentos mais complexos cut -f 19 ctxt|grep -E '(;|,| e )'|sed '{s/[,;]/\n/g ;s/ e /\n/g; s/ by /\n/g }'|sed 's/^ //'|sed '{/[Vv]ários/d; }'|sort -u|cat -n [Tente apagar as etapas entre barras verticais '|' (filtros), do fim para o princípio, para ver o que acontece] cut -f 19 ctxt|grep -E '(;|,| e )'|sed '{s/[,;]/\n/g ;s/ e /\n/g; s/ by /\n/g }'|sed 's/^ //'|sed '{/[Vv]ários/d; }'|sort -u|cat -n cut -f 19 ctxt|grep -E '(;|,| e )'|sed '{s/[,;]/\n/g ;s/ e /\n/g; s/ by /\n/g }'|sed 's/^ //'|sed '{/[Vv]ários/d; }'|sort -u cut -f 19 ctxt|grep -E '(;|,| e )'|sed '{s/[,;]/\n/g ;s/ e /\n/g; s/ by /\n/g }'|sed 's/^ //'|sed '{/[Vv]ários/d; }' cut -f 19 ctxt|grep -E '(;|,| e )'|sed '{s/[,;]/\n/g ;s/ e /\n/g; s/ by /\n/g }'|sed 's/^ //' cut -f 19 ctxt|grep -E '(;|,| e )'|sed '{s/[,;]/\n/g ;s/ e /\n/g; s/ by /\n/g }' cut -f 19 ctxt|grep -E '(;|,| e )' cut -f 19 ctxt -----------------------------------------------------------------------------------