Você está na página 1de 16
0sio6r2022 17:04 AVAUNINOVE Comandos "Linux" para Aplicacdes de Filtros APLICANDO CONDIGOES ESPECIAIS, OU SEIA, FILTRANDO, OS COMANDOS LINUX, PODEMOS ENRIQUECER FORTEMENTE A OPERACIONALIDADE DO SISTEMA OPERACIONAL, INCREMENTANDO A ADMINISTRAGAO E DESEMPENHO DE QUEM ADMINISTRA OS SERVIGOS DE REDE. 0 GANHO DE PERFORMANCE £ TAO GRANDE QUE MERECE UM ESTUDO APENAS SOBRE FILTROS, NAO PELA QUANTIDADE DE TIPOS DE FILTROS, MAS PELA EXEMPLIFICAGAO QUE PODE PREPARAR MUITO MELHOR O ADMINISTRADOR DE REDES. AUTOR(A): PROF. LUCIANO GILLIFRON GAVINHO, Filtrando do Linux Um dos principios adicionais do Linux é que cada item deve fazer uma coisa e uma jnica coisa e que podemos facilmente juntar esses itens em comandos compostas{i}¢ [2]. Pense nisso como um conjunto de blocos de construgio que podemos colocar juntos. Portanto, podemos de construir qualquer coisa que quoremos. Neste t6pico, vamos aprender sobre alguns desses blocos de construgio, Entio, veremos como podemos construi-los em criagdes mais complexas que podem fazer um trabalho itil para nés. Um filteo, no contexto da linha de comando do Linux, é um programa que aceita dados textuais e depois transforma-o de uma maneira especifca, Filtros sto uma maneira de tomar éados brutos, produzidos por ‘outro programa, ou armazenados em um arquivo, e manipulé-los para serem exibidos de uma forma mais adequada para o que queremos saber, ou apresentar. Esses fits geralmente tém varias opgdes de linha de comando que modificardo seu comportamento, por {sso sempre é bom consultar 0 manual de cada filtro para ver o que esté dispontvel. "Nos exemplos abaixo estaremos fornecendo entrada para esses programas por um arquivo, mas logo depois, ‘quando tratarmos de Piping e Redirecionamento, veremos que podemos fornecer entrada por outros meios {que adicionam muito mais rapide. ‘Vamos nos aprofundar ¢ apresentar alguns deles, mas lembre-se: os exemplos aqui s6 the dario uma mostra do que & poss{vel com esses comandos. Certfique-se de explorar e usar sua eriatividade para ver 0 ‘que mais voeé pode fazer com eles. itpssiava.uninove.brisewAVAopicolcontainer_impressao.0hp a. 0sio6r2022 17:04 AVAUNINOVE Para cada uma das demonstragdes abaixo vou usar 0 seguinte arquivo como um exemplo: exemplofiltro.txt. Este arquivo de exemplo contém uma lista de conteddo puramente ficticio para tornar os exemplos um pouco mals féceis de entender, mas permitem perceber que eles v3o trabalhar do mesmo jeito com, absolutamente, quaisquer outros dados textuais. Além disso, lembre-se que 0 arquivo é realmente especificado como um caminho e, portanto, vocé pode usar caminhos absolutos e relativos ¢ também ccuringas (*). Mais para frente voce iré entender bem o que estou querendo dizer. © arquivo exemplofiltro.txt jé esté gravado no disco de minha maquina linux. Usando 0 comando cat é possivel visualizé-lo. Procure fazer o mesmo em sua maquina virtual. Aliés, recomendo que vocé erie uma maquina real linux. 0 experimento com todas as atividades que faremos com linux seré muito mais proveitoso se voce o fizer. Veja abaixo na figura 1 o resultado, eres ee te et reer enc iret Zoksatoeo Pesrcees centre) grao-de-bico 15 Meroe) Iilson senolina 11 Saree) vidio sagu 10 Nts aera) Foie mecca Serene es Coser OED | Filtros: head Head & um programa que imprime as primeiras “x” linhas de seu arquivo (lembre-se, nao precisa ser arquivo, pode ser qualquer entrada!). Por padrlo, ele ird imprimir as primeiras 10 Tinhas, mas podemos ‘modificar isso com um argumento de linha de comando. head [number of lines to print] [path] itpssiava.uninove.brisewAVAopicolcontainer_impressao.0hp 206 9310812022 17:08 AVAUNINOVE luckygav@LuckyGavNot ear ere cee Rec aeag ets eensce) Pksetrieey Peer reeey PCR Signe cess PCat ries) isis grao-de-bico 15 Rocio raet Tees Saar rae} SE mc eee ‘Acima, na figura 2 observa-se 0 comportamento default do comando e, abaixo, na figura 3 pode-se se ver a especificagao de quantas linhas queremos mostrar (no caso, 5) Perret eon Mec Cette Mets Ceo crer) acm eeaaese re) Resear titra tail Tall € 0 oposto da head. Cauda é um programa que imprime as GIkimas tantas Tinhas de sua entrada. Por padrao, ele ird imprimir as Giltimas 10 linhas, mas podemos modifcar isso com um argumento de linha de comando, Absixo um exemplo default na figura 4 tail [number of lines to print] [path] hitpsava.uninove.brisowAVAopicolcontainer_impressa0.ohp a6 9310812022 17:08 AVAUNINOVE luckygav@LuckyGavNote: ~ Wear ets icai cence CC teic mers CaoRe ens Satemressal ier) Serio ace CTT) ee aes) SCs tg Teac eer Teer Mean CS E abaixo, na figura 5, podemos ver 0 mesmo comando com a especificagao do numero de linhas. etre erence (eee te Teeny aan AOSenrraerr eee} ue PPE ret ncres Este comando, tail, é muito utilizado pelos administradores de sistemas, pois sempre que ocorre alguma falha, 0 operador usa o comando rapidamente para ver no console as ditimas 10 linhas da log do sistema. Certamente o problema apareceré Ii. sort Sort classificaré sua entrada, sem esforgo e extremamente simples. Por padrio, ele iré classificar alfabeticamente, como aparece na figura abaixo, mas existem muitas opgSes disponiveis para modificar 0 mecanismo de classificagao. Certifique-se de verificar 0 manual para ver tudo o que pode fazer. sort Loptions) (path) hitpsava.uninove.brisowAVAopicolcontainer_impressa0.ohp 4n6 0sio6r2022 17:04 Geir ten nnc ee ete cee aes Cea eres Reser rr aeesy Cem Rae carlos lentitha 20 pearance Pierce seer Peace etc ris iets Peete et] eenecoaet) ieee) eee eeu c Greece Caercer net oe Crees eceeS erry Pray eats ce Mostra o niimero da linha de cada item de sua entrada/arquivo nl Loptions] [path] Peers PE en eh eee ec aear) er) anes PaaS er) Carlos lentitha 20 pain ce eae) isciricaer) rorenierastriets Paar ay Caer TTC) eee aer Sey Rae NEU Pretest) SE Cree | © formato default, como na figura 7 acima ja € stil, mas podemos abusar de opgdes especiais como a da figura 8 AVAUNINOVE itpssiava.uninove.brisewAVAopicolcontainer_impressao.0hp 5i6 9310812022 17:08 AVAUNINOVE Beiter terns Pres ets stele a ee CR ce raacer eects carineae tent) Pa eee rates reteat Tier) peariecerery ae eae ger) Tice On Oriees een ae CCC) Cog aes ene ee mS Ue wet Preece Cee Teese cee | No exemplo acima usamos duas opgées de linha de comando. © primeiro, -s, especifica 0 que deve ser mostrado apés 0 nimero, enquanto 0 segundo specifica quanto espagos colocar antes dos nimeros. Para 0 primeiro n6 precisamos incluir um espago como parte do que foi impresso. Como os espagos sao normalmente usados como caracteres separadores na linha de comando, precisévamos de uma forma de especificar que o espago eta parte do nosso argumento e nao apenas 0 espaco tipico entre argumentos. Fizemos isso, incluindo o argumento cercado por aspas/apéstrofes. We significa contagem de palavras e faz exatamente isso (assim como caracteres ¢ linhas. Por padrdo, ele daré uma contagem de todos os 3, mas usando opcdes de linha de comando, podemos limitar a apenas o que ‘queremos. Veja a figura 9 abaixo. we options] [path] erator cc eC ueg acs ‘As vezes vocé apenas quer um destes valores. -I s6 mostrard as linhas, -w s6 mostraré as palavras e -m s6 mostraré os caracteres. © exemplo abaixo nos di apenas uma contagem de linha, Figura 10, hitpsava.uninove.brisowAVAopicolcontainer_impressa0.ohp 56 9310812022 17:08 AVAUNINOVE Beiter ass omen tourer mC 14 exenplofiitro. txt re ten ree | Vocé pode combinar as opgdes com abaixo, na figura 11, queremos as linhas e as palavras, eerste eet re eC Rte ead eoeacraucerae ts uckyGavNote:~$ fl cut Cut é um bom programa pequeno para usar se 0 seu contetido é separado em campos (colunas) e vocé s6 {quer certos campos. Figura 12. ‘cut [options] [path] Em nosso arquivo de amostra temos os nossos dados em 3 colunas, o primeiro é um nome, o segundo fruto e o terceiro uma quantidade. Digamos que s6 queriamos a primeira coluna. hitpsava.uninove.brisowAVAopicolcontainer_impressa0.ohp me 9310812022 17:08 AVAUNINOVE coat eoss oes 0 cut padrio usar 0 caractere TAB como um separador para identificar campos. Em nosso arquivo usamos ‘um tinico espago em vez disso, entio precisamos dizer para cut usar isso 0 espago tinico em ver disso. 0 caractere separador pode ser qualquer coisa que voc® queira, por exemplo, em um arquivo CSV 0 separador 6 tipicamente uma virgula (.). Isto é 0 que a opgio -d faz (incluimos 0 espago dentro de aspas simples para que ele saiba que isso é parte do argumento). A opgdo -f nos permite especificar qual campo ou campos gostariamos. Se queremos 2 ou mais campos, entdo separd-los com uma virgula como abaixo. Figura 13. hitpsava.uninove.brisowAVAopicolcontainer_impressa0.ohp ans. 9310812022 17:08 AVAUNINOVE Sinker) Seema ere acy Luciano arroz Tees eae eee Resi | an Seer tes easy yoaveluckyCavNiote:-§ ll sed Sed significa “Stream Editor” e efetivamente nos permite fazer uma pesquisa e substituir dados em nossa entrada/arquivo. £ um comando bastante poderoso, mas vamos usé-lo aqui no seu formato bisico. sed [path] Acexpressio bésica é no seguinte formato: + s/search/replace/g 0s” inicial (substitui) especifica a agdo a executar (hi outros, mas por enquanto vamos manté-lo simples). entre a Em seguida, entre a primeira e segunda barras (/) colocamos o que estamos procurando. Em seguida, segunda e terceira barras, 0 que & que queremos colocar em substituigdo. O g no final significa global e é opcional. Se 0 omitimos, ele $6 ir substituir a primeira instancia de pesquisa em cada linha. Com a opgao 4, vamos substituir todas as instancias de pesquisa que estdo em cada linha. Vejamos um exemplo. Digamos {que acabou cevada e queria em ver disso dar feijdo para as pessoas. Veja como fica na figura 14 hitpsava.uninove.brisowAVAopicolcontainer_impressa0.ohp ons. 9310812022 17:08 AVAUNINOVE ferences Gavuote:-§ sed 's/cevada/fetjao/g' exenplofiltro. txt Luctano arro eesti eoc tr ieeteantae) EMCI nescrrtraete Pate yGavNote:~$ I E importante notar que sed nio identifica palavras, mas sequéncias de caracteres. Tente executar 0 exemplo ‘acima, mas substituindo feijées com ads e vocé vers o que quero dizer. 0 termo de pesquisa é também algo ‘chamado de expressio regular, que é um meio para definir um padrio (semelhante aos curingas que vimos). ‘Vamos aprender mais sobre expresses regulares na proxima segdo e voc’ pode usé-las para tornar o sed ainda mais poderoso. Observe também que incluimos nossa expresso entre aspas simples. Fizemos isso para que qualsquer caracteres inclufdos nela que possam ter um significado especial na linha de comando nio sejam interpretados e executados pela linha de comando, mas em vez disso passam por sed. ‘Um erro comum é esquecer as aspas simples, caso em que vocé pode obter algum comportamento estranho da linha de comando. Se isso acontecer, talvez seja necessério pressionar CTRL ~ ¢ para cancelar 0 programa e voltar para o prompt. unig Unig significa exclusivo e sua fungdo é remover linhas duplicadas dos dados. Contudo, uma limitagao é que ‘essas linhas devem ser adjacentes (isto 6, uma apés 2 outra). (As vezes este nao 6 0 caso, mas vamos ver ‘uma maneira podemos corrigit isso com Piping e Redirecionames uniq [options] [path] ‘Vamos dizer que © nosso arquivo de amostra foi realmente gerado a partir de outro programa de vendas, mas depois de uma atualizagio de software que tinha elguma safda bugada, Veja na figura 15, hitpsava.uninove.brisowAVAopicolcontainer_impressa0.ohp 1018 osinsi2022 17:08 AVAUNINOVE Pesos er hte sre eee ec ane eed Pere ete itseuce iar raet) ieeesecriees ieee sees lovidio sagu 10 fisenrmt gees nie) Eececmsciniciec Bussab Utchta 40 (eo eee | facilmente arrumar este problema. Veja na figura 16 abais esr tc sees ary etna coic renter ets INarta farelo 5 Roberto fetjao 34 carlos Lentitha 20 beater reece tcdety fitseroerrerser) ecm Lye wees Cierra ras eT) Westra ste | tac Caros, 08 desenvolvedores do Linux sio conhecidos por ter um senso de humor bem avantajado. O programa tac é realmente cat ao contréio, Foi nomeado assim porque faz 0 oposto do cat. Ele pegara a centrada/arquivo e apresentard na console iniciando pela ditima linha e terminando na primeira ontainor_mpressa0.php 9310812022 17:08 AVAUNINOVE tac [path] ‘Talvez nosso arquivo de amostra tenha sido gerado por um sistema que escreve cada nova ordem de vendas, por exemplo, no final do arquivo. Como resultado, as ordens mais recentes esto no final do arquivo. Gostarfamos que as ordens mais recentes aparesam sempre no topo. Entio usamos © tac como abaixo na figura 17. een testa esr eee eee are Cte ree eee) eee ment) Neem ae Pies) Dvidio sagu 10 ate) faeesety feet sis grao-de-bico SCC sate! Roberto feijao 34 Pao rer) redro trigo awk ‘Awk & quase uma linguagem de filtro. Pode-se fazer testes légicos e mostrar na tela além de filtragens caractere por caractere. Na figura 18 vocé pode ver um exemplo. Olhando o manual do comando, vacé pode adquirir muito poder sobre o manuseio de arquivos. ‘Awk “if (lagica) print Scampo {oath} A légica pode ser como um “if* na linguagem C eo campo é 0 nimero da coluna que se quer mostrar. Na légica pode-se colocar a referéncia as colunas igualmente, sempre precedido de um $. Tanto no “if” como no “print” podemos usar varios campos referendados. hitpsava.uninove.brisowAVAopicolcontainer_impressa0.ohp 126 0sio6r2022 17:04 AVAUNINOVE eer eee eres eee an CCE ee aa Ta Cat as ase! Tate crteatry 7H Piping ‘Todos os comandos do Linux que apresentam qualquer tipo de consulta em entradas e arquivos podem ser filtrados pelo pipe. Pode-se criar um pipe simplesmente colocando o simbolo de piping apés o comands (0. Além disto pode-se juntar varios comandos desta forma. Veja os exemplos abaixo na figura 19, inclusive usando 0 grep um poderoso filtro para pesquisas. [errs sree See Ck em aC eee ser) et eneerery Crreetieeaarts ey iene mentors ata Bs > 17) print $1 Agora que vocé aprendew virias opgées sobre filtros podemos mostrar abaixo exemplos de utilizagdo importante na administragio de sistemas. itpssiava.uninove.brisewAVAopicolcontainer_impressao.0hp 1316 0sio6r2022 17:04 AVAUNINOVE ‘Observe na figura 20 0 uso do comando "Is -Ih", ou seja, liste tudo que hd no diretério corrente mostrando todos os detalhes e com o tamanho dos arquivos em forma “humanamente” inteligivel (em bytes). Em seguida pede-se 0 mesmo, mas com um filtro para mostrar diretérios que tém mais que duas entradas em seu interior. errors en Teme Retr aaa tite nonaatans reer cree nie reer Egret poe) ere reer rr erst Rea Wekyga pees Wwekyga Wekyaay reer Pearse a Cg eecae) ‘Um outro exemplo seria o seguinte: Quero verificar quando foi a ultima vez que o sistema “deu” para a minha interface de rede os IPs e definiu algumas caracteristicas de rede. Sei que quem faz isto 6 0 NetworkManager e que mostra isto na log do sistema (syslog) em umas 8 linhas. Veja na figura 21 como isto seria til j@ que uma log de sistema é muito grande e perderia horas procurando isto, itpssiava.uninove.brisewAVAopicolcontainer_impressao.0hp 1418 0sio6r2022 17:04 AVAUNINOVE tess ‘Agora 6 uma questo de criatividade e necessidade... estes dois elementos somados fardo vocé ficar um expert em filtros no Linux. ATIVIDADE FINAL E correto afirmar sobre filtros: [A Sio 6timos, mas s6 podem ser usados um de cada vez, B.Sio muito iteis e podem ser usados em conjuntos. C.Nio podem ser aplicados a comandos de listagem de arquivos .Sé6 podem ser utilizados com “eat O filtro "tail" é Gtil quando: ‘A. Quando queremos anslisar a quantidade de linhas de uma consulta. 'B. Mostra todas as primeiras 10 linhas de um arquivo de texto, .£ Util quando temos um arquivo grande para consultar, mas queremos ver apenas as ltimas inhas. D.£ bom para ver colunas especificas de certa entrada/arquivo, A opgao de se poder criar um “if” em um filtro ocorre no filtro: itpssiava.uninove.brisewAVAopicolcontainer_impressao.0hp 18116 0sio6r2022 17:04 AVAUNINOVE A.Grep B.Head CAwk D.uniq REFERENCIA [1] Sobell, M. G. (2005). A practical guide to Linux commands, editors, and shell programming. Prentice Hall Professional Technical Reference. [2] Welsh, M., Hughes, P., Bandel, D., Beletsky, B., Dreilinger, S., Kiesling, R., .. & Pierce, H. (1994). Linux Installation and Getting Started. Specialized Systems Consultants. itpssiava.uninove.brisewAVAopicolcontainer_impressao.0hp 16116

Você também pode gostar