xDICA
xDICA

O EXTERMINADOR DO FUTURO

Entrevistador: Como o Sr. candidato pretende melhorar a condição básica de vida da população como um todo?

Entrevistado: Com a cabeça-no-lugar, e a administração na ponta-do-lápis. Sou um homem de resultados. Enxugar a máquina. Liderar esforços. Meu lema quanto a governo é um só: seriedade, trabalho, trabalho, muito trabalho e dedicação. Sou um homem sóbrio. Não gosto dessa história de falação. Comigo é assim: mais ação, menos falação. Não me apetece esse negócio de ficar votando, discutindo. Menos discussão, mais ação. Não me apetece a democracia, mas eu gosto de eleição. É uma forma bonita de entrar em contato com a população. Eu gosto do povo.

Enxugando a máquina, com a administração na ponta-do-lápis, e a cabeça-no-lugar, economizaremos toneladas de dinheiro e tempo, todos gastos com o aparato burocrático. Gosto de burocracia, mas não gosto de baderna. Tempo é dinheiro, e eu gosto de dinheiro. Mas dinheiro público é uma coisa séria.

Comigo é assim: trabalho, trabalho e muita dedicação. Sem se precipitar, com a cabeça-no-lugar. Meu lema quanto a governar é um só: seriedade e perseverança. Tenho a cabeça no lugar, e não desisto nunca. O governo precisa de um homem para segurar a rédea e tocar essa administração com firmeza e seriedade, calejando com a enxada todas suas duas palmas da mão.
O governo precisa de um homem sóbrio com cabedal para acabar com a imoralidade e ostentar a hóstia da tradicional família e dos cidadãosdebemtrabalhadores que construíram esse país.
O governo precisa estar com a cabeça no lugar, sóbrio e com menos falação.

Dinheiro é coisa séria, e o Brasil precisa crescer, precisa progredir, o Brasil vai fazer uso de seus recursos naturais infinitos com dignidade, chega de atraso! Comigo é assim: com a cabeça-no-lugar, e a visão para o futuro. O Brasil não pode mais perder tempo com discussão, com votação, com falação. Não. Tempo é coisa séria. Sou um homem sóbrio. O Brasil é coisa séria. O Brasil não pode perder tempo. Eu gosto do Brasil. Não me apetece o atraso decorrente desse negócio de ficar falando, desse negócio de ficar discutindo, desse negócio de incentivo aquilo, incentivo fulano, incentivo à cultura, e tudo que se ouve são impostos aqui, impostos ali, onde qualquer cidadãodebemtrabalhador percebe que é impossível o empreendedorismo na hecatombe sofrida pelo indivíduo nessa época de globalização. Comigo é assim: enxugar a máquina, na tentativa de reduzir os impostos, e acabar com essa baderna de perder tempo discutindo sem a cabeça-no-lugar. Sou um homem sóbrio.

O Brasil e eu não temos mais paciência para perder nosso tempo e nosso dinheiro, sou cidadãodebemtrabalhador, com cabedal, sobriedade e não gosto de falação. Minha receita é diagnóstico, é estetoscópio, é prescrição de remédio. Comigo é mão na massa, ponta-do-lápis, cabeça-no-lugar, seriedade; levo dinheiro à sério, e meu lema é um só: seriedade, compromisso com o Brasil, a cabeça-no-lugar, mão na massa e gosto pelo espírito comunitário. Com trabalho e dedicação, compromissado com a governança e o funcionamento da máquina enxuta reduzindo impostos. O Brasil já está à todo vapor na era da Informática e do desenvolvimento. O que esse país precisa é a cabeça-no-lugar, e aquele empurrãozinho pra locomotiva entrar em funcionamento. Claro que é preciso ter a administração na ponta-do-lápis para criar todo um cenário frente à globalização que possibilite esse progresso, que vai acontecer à todo-vapor, com dedicação, nos trilhos, com seriedade.

Eu gosto do povo. Menos discussão, mais ação. Não me apetece a democracia, mas eu gosto de eleição. É uma forma bonita de entrar em contato com a população. Com Ordem, asfalto e avenida, e a cabeça-no-lugar. E seriedade.

(texto escrito por Gustavo Loureiro Conte, em 2006)

O DIA DA MARMOTA

* O DIA DA MARMOTA *

(Dedicado a dois Henriques que muito me ensinaram, ambos, acerca da luz e da sombra)

Queridos Henriques, alguns diriam que o Brasil necessita de uma convulsão dolorosa, dada a procrastinação do processo civilizatório desta Nação. Dado o paternalismo e o legado colonial, talvez sempre tenha sido delegado ao estrangeiro, o papel regulador dos nossos conflitos sociais. Jamais conquistamos o direito da autonomia pois aqueles, dissidentes desta espécie de pacto, são neutralizados brutalmente, desde a rebeldia dos malcriados brancos barões, feita às escuras, sendo que aqueles sem respaldo, párias, de maioria negros, de maioria pobres, que então à luz do dia, com o aval cínico de uma sociedade que almeja uma espécie de fascismo brando, talvez o mais violento, de todos os fascismos existentes no Globo, pois creio não haver nada mais psicótico ou esquizofrênico, do que esta ternura, cordial, da tortura, cotidiana.

Dado o cínico pacto de cordialidade donde se assina apenas a casta dominante, donde a mesma vende desde a luta diária da dona-de-casa pelo leite, ao pau-brasil, o pré-sal ou o nióbio, permanecemos nos portando frente ao estrangeiro como uma ótima oportunidade de investir, lucrar e portanto, explorar.

Donde emana o direito desta casta, de falar em nome daqueles que vivem uma realidade muito mais cruel e diversa, destes que cozinham as refeições, coletam o lixo, conectam as ligações, dirigem ambulâncias, os guardam enquanto em paz dormem em seus condomínios? E que paz e que sono gentil há neste país tão servil? Estamos, todos, fodidos. E estaremos fodidos enquanto tentarmos vencer alimentando um Ego holográfico que faz plim-plim, donde magicamente se resolvem todos os problemas pela neutralização brutal dos dissidentes, donde se alimentam nomes, heranças de passados gloriosos que jamais existiram. Ou esperanças que jamais se concretizarão. Enquanto os interesses pessoais se sobrepuserem à catástrofe coletiva, enquanto os mecanismos de regulação civilizatórios mais básicos, servirem a um Ego holográfico, dopado de uma espécie de Vontade de Potência que naufraga noutra margem; enquanto a ilusão de uma sociedade cordial, pacífica e igualitária, virtualmente sustentada por uma ordem absolutamente inexistente, prometer um progresso naquele milagre futuro, enquanto a caravela não chegar ao Hy-Brazil definitivamente, e definitivamente exterminar os índias, e definitivamente escravizar negros, e definitivamente explorar imigrantes, e definitivamente vender almas aos demônios, enquanto vigorar tal mentira, sempre, nossa saída, será pedir que o forte e esbelto estrangeiro coloque as coisas novamente, fora de ordem, dentro da Nova Ordem, mundial.

ENQUANTO A VISÃO ASSIMÉTRICA DE NOSSO CONTERRÂNEO IMPERAR, ASSIMETRIA QUE TRESPASSA AS BARREIRAS DO RACISMO, DA SOBERBA, DA AVAREZA, DA PREGUIÇA, DA INVEJA, DO ÓDIO — QUE É O MEDO — JAMAIS TEREMOS A HOMBRIDADE DE OLHAR PARA NOSSOS IRMÃOS ESTRANGEIROS, SERES HUMANOS QUAIS SUSTENTAMOS PELOS SÉCULOS E SÉCULOS SEU CRESCIMENTO E ACUMULAÇÃO DE RIQUEZA IRREFREÁVEL, ILIMITADA, CUJA MISSÃO, DESDE LEVAR O HOMEM BRANCO A LUA, ATÉ A CRIAÇÃO DO HOMEM BIÔNICO, SERVE APENAS PARA SUSTENTAR A CONDIÇÃO SUBALTERNA DE NOSSO EGO HOLOGRÁFICO, SUB-EGO. NOSSO REGULADOR PSÍQUICO É UM SUB-EGO. NÃO CONSEGUIMOS TOMAR SEQUER UMA DECISÃO SEM CONSULTAR, PONDERAR, CONSIDERAR, NOSSO QUERIDO IRMÃO ESTRANGEIRO SER-HUMANO QUAL, PASMEM, NÃO FORAM ESTES QUE NOS COLOCARAM NESTA SITUAÇÃO.

O medo do REGRESSO. O medo do CAOS. O medo. O medo. O medo.

Sim, você está certo. Não há rigor acadêmico em textos do Facebook, ou blogs, ou Orkuts, muitas vezes hoje em dia sequer em Universidades, tamanha a situação patética qual estamos lambuzados, tudo porquê um dia, a casta dominante, preferiu vender sua alma a demônios, que utilizaram suas almas e o sangue de seus serventes para festejar, putaria, para dopar-se, para pecar, para armar-se o suficiente para explorar os miseráveis mas não o suficiente para reagir contra seus supostos algozes. Só que nós somos nossos próprios algozes. Nós somos nossos maiores inimigos, e poderíamos ser nossos heróis, não a KGB, não a CIA, tampouco a Gestapo, mas nós, poderíamos assumir este papel. Me parece mais fácil delegar. Só que na História não há caminho mais fácil e muito menos expressões que mediante a oralidade se tornam triviais, visto que apenas são proferidas pelo emissor sem que este se atenha a uma análise minuciosa em relação à sua empregabilidade.

Por isso aqui não proponho uma solução, nem insinuo uma saída ou uma catarse. O que escrevo aqui não é ciência — nem poesia. Sequer estará sendo lido, provavelmente. Derramamento de SANGUE? Mais do que cotidianamente, quando a panela fica tão vazia ou quando aquele que deveria nos proteger, nos tortura, mata ou ridiculariza? Aqui aquele que deveria nos defender, é quem nos controla, aqui aquele que deveria nos representar, é quem nos trai, a Verdade morre no primeiro instante de qualquer batalha, posto que o segredo é conveniente e conivente com o cagaço geral de um país bilionariamente arregaçado, continentalmente introspecto, culturalmente confuso.

Não que nossos irmãos d’além tenham sido bem sucedidos em alcançar a Paz, ou a Justiça, ou a Liberdade. Mas eles erguem suas cabeças e MORREM se necessário, SANGRAM se necessário, até a última gota de Sangue, por sua Pátria, que faz sentido, já que ela os contempla, minimamente. Não, eles não erguem a cabeça por 7×1 ou pole-positions. Tudo tudo tudo que todos aqui sabem muito bem, não estou falando nada de novo, na última semana posso ter falado sim algumas novidades, mas que foram convenientemente ignoradas, por medo. Por deboche. Ignorância. Não que tenha cumprido algum papel; ou que minha honestidade valha para alguma coisa. Não estou cobrando ninguém de nada. Só acho, que tanto o pequeno Emílio e Macunaíma, precisam ambos morrer. A caravela precisa alcançar a plataforma continental gigante pela própria Natureza, o extermínio em massa deve acontecer, resumindo: NÃO HÁ COMO RETRATAR UM ERRO QUE NÃO SE CONCEBE, NÃO HÁ COMO ASSUMIR UMA RESPONSABILIDADE QUE É CINICAMENTE DELEGADA A OUTREM.

Não acho que a academia, a religião, a tecnologia ou a força bruta possam matar o pequeno Emílio e o Macunaíma. Eles parecem ser invencíveis por aqui.

O purgatório dos brancos, inferno dos negros, é justamente isso: uma outra dimensão, eterna, cíclica, que retornará over-and-over-and-over-again. Jamais se desmantelará, como o subEgo separatista sonha, jamais realizará o sonho milenarista de um Antonio Conselheiro. Penderá sempre do cientista de foguetes para Uri Geller numa fração de segundos, e isso é interessante, apenas do ponto de vista de um cientista maluco, alugável para qualquer finalidade.

A política é a relação entre os homens. Mentiras, traição, inveja, cobiça, calúnia, egoísmo, interesse pessoal, ao invés da verdade, da fidelidade, da hombridade, solidariedade e do interesse verdadeiro com o Bem de todos, impera no campo desta novela barata, de canastrões, vendidos, e aqueles que representavam uma fagulha de esperança, aqueles que representavam um caminho autonomo a seguir, novamente foram sileciados, por seus próprios conterrâneos, ambos, vítimas do subEgo holográfico de uma nação virtual.

Não há contradição — tudo foi posto fora do lugar intencionalmente desde a concepção. TODOS SABEMOS o organograma dessa bosta.
A hipnose mágica, nunca será quebrada. Somos o Sul da América. A macacada. Pois vivemos a ilusão de permanecer um bom selvagem, matando o Homem Coletivo; pois confundimos Liberdade com Libertinagem, pois poderíamos ter vivenciado uma Liberdade mais plena como NUNCA! Mas ela, uma vez ameaçada, de leve, fez nossas velhas veias e cicatrizes ainda abertas, sangrar. E novamente. E novamente. E novamente.

Por isso chamo este texto de DIA DA MARMOTA.
Por isso nossa História é um Feitiço do Tempo.

De tanta veracidade em minhas palavras, que nada também de novo para vocês aqui foi concebido.

Obrigado pela participação. Isto não é uma opinião. Não é um texto. Não houve sequer uma revisão do autor. Talvez tenha sido psicografado — talvez feito de coração e amor. Mas rimar, ainda resta, enquanto penduram nossas almas presas dentro de nós mesmos, que ignoramos uns aos outros, por vezes ridicularizamos uns aos outros, em nome de quem é o sub-sub ou infra-sub. Ou super-sub. Über-sub.

Este texto está no mural do Prof. Henrique Carneiro, mas eu dedico a você, povo brasileiro.

Como odeio teu ódio cínico, cordial, que tanto afaga enquanto açoita, PORRA! QUANDO CHEGARÁ AO DESTINO, NOSSO NAVIO NEGREIRO?

Pipelines de gStreamer para diversão

Pequenas férias da nossa viagem com a Voyager, para brincar com multimídia. 😀

Esta dica é breve, mas você pode experimentar gst-inspect-1.0 | egrep -i 'opengl|libvisual' os diversos plugins disponíveis e brincar com a pipeline para gerar visualizações de audio muito legais!

Criei este som com o tracker RENOISE, após gerar a mp3, lancei a pipeline abaixo e vejam que legal o resultado. 🙂 bacana hein?



gst-launch-1.0 filesrc location=bugu.mp3 ! mad ! audioconvert ! libvisual_jakdaw ! glupload ! autovideoconvert ! gleffects_identity ! gleffects_laplacian ! gleffects_lumaxpro ! gldownload ! autovideoconvert ! x264enc ! webmmux ! filesink location=video.webm && avconv -i video.webm -i bugu.mp3 Buga.webm

Parseando conteúdos

Vamos aprender sobre a VOYAGER, para aprender expressões regulares; este é um projeto da NASA que há décadas atrás lançou uma nave muito especial, não tripulada, contendo um artefato com informações relevantes sobre.. nós! O povo terráqueo. Dentro de um disco de ouro há coordenadas, informações, e música! Música do povo terrestre, de diversos lugares do mundo. Esta missão é a mais distante nave desenvolvida pela humanidade a alcançar o Espaço! E expressões-regulares? Porra, muito mais importante que a VOYAGER! Bora entender pq?

Olá pessoal! Nesta segunda xDICA estaremos utilizando o truque anterior para parsear com segurança certas strings de uma página web! Ao final desta sequência criaremos um programa para baixar músicas (domínio público, patrimônio da humanidade) de forma dinâmica, utilizando a página de referência dada aqui.

A brincadeira é a seguinte: na página da NASA temos uma lista de músicas impressas no disco dourado da Voyager. Enquanto a nave viaja com estas informações, nós vamos treinar shell script e alguns outros conceitos de Linux, sendo que ao final deste conjunto de dicas, você terá um script que busca as músicas contidas nesta lista. Divertido? Mãos à obra.

Vamos recordar a dica I:

( ls -1 | egrep ‘*$’ -n ) | while read LINE; do LINE=$( echo $LINE | cut -d\: -f2- ); echo \’$LINE\’; done

Desta vez ao invés de simplesmente, listar o diretório ( com ls -1 ), queremos o output das músicas que estão nesta página: http://voyager.jpl.nasa.gov/spacecraft/music.html

Como o site da Voyager recorrentemente deixa de responder, não sei qual a razão, criei um mirror do mesmo em https://www.gu.pro.br/voyager
Portanto, você utilizará a seguinte URL nos testes: https://www.gu.pro.br/voyager/spacecraft/music.html

Desta forma não se corre o risco de aloprar a NASA nem que a NASA alopre a gente.

Aliás na próxima dica mostrarei como é fácil criar um mirror através de funções que buscam links recursivamente. Daí vou mostrar também uns truques para ajeitar os links referenciados dentro da página copiada, de modo a utilizar URLs relativas no lugar de absolutas, para deixar o mirror o mais “independente” possível do servidor principal.

Por enquanto apenas parsearemos a listagem de músicas, então em primeiro lugar, você precisará baixar o documento da URL a seguir: https://www.gu.pro.br/voyager/spacecraft/music.html

Existem muitos programas que podem fazer isto, mas a forma mais eficiente e portável na minha opinião é o

cURL

, disponível em qualquer distribuição, com bibliotecas para C, PHP, Python, e um belíssimo executável para que você utilize em shell-scripts, que é nosso caso.

O comando para baixar a página correta e visualizar a fonte HTML com cURL é o seguinte:

curl -B https://www.gu.pro.br/voyager/spacecraft/music.html

Rodando isto no seu shell você verá algo do tipo:

Screenshot from 2016-03-28 17-21-49

Que é o output do arquivo HTML contido no servidor. Se você quiser inspecionar o HTML por sua conta, faça um PIPE com o comando “more” ou “less”, sério mesmo, não vou ensinar isso pois creio que já sabem direito como fazer pipes simples e redirecionar output. Teremos uma dica sobre isso mas tratando de coisas mais avançadas, até mesmo explicando um exploit, wow, juro juro juro, mas não agora, amiguinho(a)(s).

Enfim: Não queremos a página inteira, apenas as músicas. Daí buscamos um PADRÃO para solucionar com simplicidade nossos problema. O mestre dos magos de busca de padrões em cadeias de caracteres é o G R E P! Para isso vamos utilizar o egrep, de modo a filtrar a saída e obter apenas o que queremos, utilizando EXPRESSÕES REGULARES, mais ou menos dessa forma:

curl -sB https://www.gu.pro.br/voyager/spacecraft/music.html | egrep ^.*[0-9]:[0-9][0-9]$

Só que isto não vai dar certo, pois quando baixamos a página via cURL, ela não está renderizada e sim em código HTML de diagramação. Só por hoje, vamos dar um Mandrake utilizando o comando “SED” (assunto pra mais tarde) substituindo qualquer coisa entre TAGS < > por NADA.. Aí fica assim o comando:

curl -sB https://www.gu.pro.br/voyager/spacecraft/music.html | sed 's/<[^>]*>//g' | egrep ^.*[0-9]:[0-9][0-9]$

Yupi! Eis nossas músicas, extraídas quentinhas da página web. Agora tem que entender o procedimento, pô! Vamos lá?

Note a adição do parametro -s ao cURL : isto é para ele ficar quieto e não mostrar estatísticas de download, que nada importam, pro nosso script feliz.

Não se incomode com o sed

. É um truque meia-boca para remover as tags de HTML. Digo meia-boca pois nem todo HTML é estruturado como da NASA, sacou? Não existe receita mágica genérica pra tudo. Sempre teste as coisas e raciocine. Decoreba não é nada hacker, nada científico, nada filosófico. E não vale a pena — o mundo muda constantemente — uma hora o decoreba falha, pois o cenário é diferente. Neste caso vai funcionar.

Vamos focar no GREP! Isso que quero que seja entendido.

O comando grep no pipe utiliza expressões regulares, que traduzirei: BUSQUE o PADRÃO seguinte: linhas que COMECEM ( ^ ) por QUALQUER CARACTERE ( . ) repetidamente ( * ) até encontrar um padrão de ALGARISMOS DE 0-9 seguidos por DOIS PONTOS e mais DOIS CARACTERES que sejam algarismos numéricos, sendo isto o término da LINHA ( $ ); eita.

Meio complicado traduzir para o portuguẽs mas acho essencial a compreensão, neste ponto, destes sinais. Não fique lendo mil vezes a frase anterior: prossiga que entenderá melhor, prometo.

^ indica INÍCIO de linha na string.
$ por sua vez o cifrão indica o FINAL da linha.

Entre estes temos os metacaracteres e quantificadores em expressões regulares, e com eles vocẽ poderá literalmente programar output buscando por padrões, dentro de strings. É fundamental o conhecimento de expressões regulares para uma agilidade maior, e as vezes, você só soluciona seu problema, se tiver a expressão regular que combina com o output desejado. APRENDA EXPRESSÕES REGULARES! Não sou um mestre disto e existem zilhões de guias, mas o pouco que sei-que-nada-sei dividirei com prazer durante todas as dicas.

\ | ( ) [ { ^ $ * + ? . < > Estes são caracteres reservados em regular expressions, caso você queira buscar pelo caractere literalmente, será necessário em alguns engines, “escapá-lo” com uma BARRA INVERTIDA \ seguida do caractere, por exemplo, \(oi\) busca literalmente um parenteses abrindo, o caractere “o”, seguido do “i”, seguido de um parenteses fechando. Sem escapar o paranteses ele tem sua função reservada que você ainda aprenderá. Isto realmente depende da implementação de regexp que você está utilizando!

Note que utilizamos o metachar PONTO ( . ) e o ASTERISCO ( * ) , estrela, pentagrama, chame do que quiser, o que importa é que este QUANTIFICADOR instrui o ENGINE DE REGEXP utilizado a REPETIR a incidência do caractere imediatamente anterior, infinitamente até prosseguir com o padrão. Dependendo do engine este pára no FINAL DE UMA LINHA, dependendo dos parâmetros, ele vai todavida até o final do input. Só que fazer o engine buscar por “qualquer caractere” é caríssimo e muitas vezes desnecessário. Ao invés do esquema testar QUALQUER CARACTERE a cada iteração, é mais fácil construir expressões como a que vem a seguir.

Como o ( . ) ponto significa “QUASE QUALQUER CARACTERE” (veremos mais pra frente, que não são todos os caracteres contemplados pelo PONTO) seguido do * que instrui a repetição, estamos ordenando o motor de expressão regular a “BUSCAR quase QUALQUER CARACTERE repetidamente …”
. . . até que . . .
na sequencia encontre nossos CONJUNTOS de caracteres, no caso alfanuméricos: [0-9]:[0-9][0-9] e o final da linha, $. Uma breve análise da página da NASA revela que, opa, as únicas linhas que terminam com este padrão são as que se referem as músicas!
Por isso mesmo poderíamos reescrever a expressão, de modo mais performático, simplesmente buscando linhas que contenham este padrao de “numerais – doispontos – dois numerais ao final da linha”.

grep [0-9]:[0-9][0-9]$

Quando colocamos caracteres entre colchetes, como veremos mais pra frente, estamos pedindo para o programa trabalhar agora com a “match” de CONJUNTOS de caracteres, no caso, todos os ALGARISMOS DE ZERO A NOVE. Olha só: ele buscará uma incidência de um algarismo de 0-9, depois a incidência de ( : ) DOIS PONTOS e novamente mais dois caracteres numéricos. Acho que deu pra sacar agora. Muito melhor que testar cada caractere por todos os caracteres a cada iteração… enfim. Dá pra entender.

DE UMA VEZ POR TODAS, AGORA VOCÊ nãaaao VAI ESCAPAR DE APRENDER! ASTERISCO NÃAAAAO funciona como no M$ D.O.S. ou command prompt, ele é MUITO mais poderoso do que isso. Já vi muito, muito mesmo, gente que erra na programação shell, php, whatever, por não entender a diferença entre um metachar e um quantificador.

Poderíamos facilmente mudar isto para [2-9]* — instruindo assim o engine de REGEXP a buscar REPETIDAMENTE, caracteres numéricos de 2-9. [1239]* por sua vez buscaria o algarismo 1, ou o 2, ou o 3, ou o 9, repetidamente. Mas mais tarde veremos melhor tudo isso. Por enquanto apenas consiga distinguir um QUANTIFICADOR de um METACARACTERE e elimine o pensamento “caractere coringa” e comece a pensar mais em “iterações” — ao invés de imaginar que o computador magicamente “substitui” as strings, comece a cair no deserto do mundo real, onde operações com strings são caras, mas se você souber programar as expressões, terá performance e o resultado desejado com MUITA facilidade.

Caramba! Vamos continuar?

Ok, tendo entendido por cima, não só copiando, a receitinha da regexp que vai pegar SÓ AS LINHAS das músicas. Respectivamente, com HTML e sem HTML:

curl -sB https://www.gu.pro.br/voyager/spacecraft/music.html | grep [0-9]:[0-9][0-9]

filtrando html:
curl -sB https://www.gu.pro.br/voyager/spacecraft/music.html | sed 's/<[^>]*>//g' | grep [0-9]:[0-9][0-9]$

Vamos parar por aqui. Experimente combinar o output com o truque da DICA 1, pois isso será fundamental para nosso script funcionar mediante ESPAÇOS por exemplo, que quebrariam tudo, se não fosse nosso truque lindo de Deus ensinado na dica 1.

Na próxima dica vamos fazer algo útil com o output.
Por enquanto, brinque com o GREP. Não há comando mais eficaz para rapidamente, DEBUGAR CÓDIGO, encontrar expressões, filtrar conteúdo, enfim,

AME o GREP. Você ainda vai precisar dele.

Obrigado pela participação!

May the source be with you. Always.

[ ]s G.C.:

PS: experimente um "cut" com delimitador dois pontos, filtrando html, você já terá a string prontinha. Mas um modo muito mais elegante é pegar apenas as strings entre as TAGS de parágrafo "p": experimente criar uma expressão regular que busque apenas o que está entre estas tags, no output sem filtragem de HTML. Te desafio.

Vale a pena brincar com variantes das expressões regulares, para entender, como conjuntos funcionam, como metacaracteres e quantificadores podem alterar completamente o “match” da string.

ADIOS!

[SHELL SCRIPT] enumere linhas de output com um pipe & grep

Inaugurando as postagens xDICA,

que vem com vídeos e conhecimento free, as in free beer as long as in freedom of course.

Deguste!

Utilidade pública. Missão: agilizar com atitude a competência geral do Universo.

Utilize expressões regulares e trate seu input/output com destreza.
Com essa dica você pode agilizar e deixar seus scripts menos suscetíveis a erros.
Enumere as linhas de output e force um delimitador com isso, : e o número da linha.
Desta forma você pode se referir a cada registro de output de um pipe simples,
como uma entidade única e ainda garantir que não haja erros. Por exemplo: se você já experimentou dar um ls em um pen-drive cheio de arquivos nojentos FAT32, sabe que um monte de mp3 por exemplo estará sujeita a ter nomes escrotos com espaços que fodem qualquer for VARIAVEL in $( ls -1 /mnt/PENDRIVEohNoes ) ou xargs, coitados, jamais sabem que os espaços meramente não são o delimitador. Vai dar erro, vai dar pau, não vai funcionar e você vai se frustrar. Vai acabar movendo e renomeando tudo na mão quando na verdade uma ÚNICA linha de shell resolveria. Enfim. Bora usar o computador ecologicamente de modo a facilitar a nossa vida e bem-estar? Ou vamos só gastar energia elétrica?

Bora então construir nosso pipe.

Pensando num universo delimitado por LINHAS, utilize o GREP para enumerá-las e o sinal de dois pontos (:) para delimitá-las. Saca só:

ls -1 | egrep '*$' -n

outputz:

1:Desktop
2:NORTHCOM norad.rsa

Uau, o arquivo com espaços está listado apenas em sua própria linha e sua “id” é 2. Isto porque usamos o grep -n que é a opção de numerar as linhas desse jeito lindo de Deus.

Agora podemos manipular o output, inclusive, tornando-as strings fechadas por aspas simples , que não gerarão erro.

( ls -1 | egrep '*$' -n )

| while read LINE; do LINE=$( echo $LINE | cut -d\: -f2- ); echo \'$LINE\' | sed 's/\ /\\ /g'; done

outputz:

'Desktop'
'NORTHCOM\ norad.rsa'

Faça depois o que você quiser. Você tem agora suas strings delimitadas, seguras e felizes.
Mude o delimitador pra qualquer coisa, adicione output em todas as linhas, etc, teste com um IF a “id” enfim, acho que essa dica gerará mais dicas por isso ela é a dica number one. Experimente um xargs. Experimente um FOR. Vai tudo funfar, meu amigo! Top dica, porra, o lance nesse site é BINário, tá sabendo?! rs

Pois esta dica na verdade é isto: use sua criatividade! Liberdade tem a ver com uma postura positiva.

Substitua “$1” por alguns comandos e note se o troço te serve pra algo. /etc/bashrc é bem útil tbm para criar aliases, por exemplo . . . mas isso fica pra outra estória!

‘cause “UNIX! I know this system…” (Jurassic Park, 1994?)

( ls -1 | egrep '*$' -n )

|

while read LINE; do LINE=$( echo $LINE | cut -d\: -f2- ); echo \'$LINE\'; done

Trate os espaços fazendo substituições com sed. Que o assunto da dica de amanhã.

Abraços! [ ] s