Ovos de páscoa no aptitude e no apt-get

Conheça as brincadeiras e piadas que os desenvolvedores esconderam dentro dos programas, para se divertir com os usuários.
Além de proporcionar alguns minutos de diversão, os ovos de páscoa tornam a linha de comando no Linux mais bem humorada e o aprendizado mais agradável — neste artigo, enquanto brincamos, vai ser possível aprender um pouco sobre os comandos, apt-get, aptitude, e grep.
ovos_de_pascoa-d
Neste texto, vou mostrar as respostas secretas dos comandos aptitude (Debian) e apt-get (Ubuntu) — que são opções de execução dos comandos e não têm qualquer utilidade prática a não ser a diversão —. Portanto, vale a pena compartilhar com os seus amigos nas redes sociais.

O jogo Atari’s Adventure (1979) foi, por muito tempo, considerado o primeiro a conter um ovo de páscoa — o nome do programador, Warren Robinett. Em 2004, contudo, um ovo de páscoa foi descoberto no jogo Video Whizball, de 1978 — que mostrava o sobrenome do programador Bradley Reid-Selth.
Wikipedia.

Os ovos de páscoa do apt-get

O aplicativo de gestão de pacotes padrão do Ubuntu, apt-get, esconde algumas respostas a determinados comandos. Algumas das saídas do programa podem ser filtradas com o comando grep, para ser melhor enfatizadas. Vou mostrar alguns exemplos.

apt-get | grep -i "super vaca"

A saída filtrada é a seguinte:

Este APT tem Poderes de Super Vaca.

Se você usar o parâmetro “moo” (pronuncia-se muu, em inglês), o programa responde com um desenho e uma frase. Veja:

apt-get moo

Embaixo da figura da simpática vaquinha, a frase “Você já mugiu hoje?

                 (__) 
                 (oo) 
           /------\/ 
          / |    ||   
         *  /\---/\ 
            ~~   ~~   
..."Have you mooed today?"...

A opção -qq, cuja função é inibir a saída do comando, exibindo apenas os possíveis erros, retorna apenas a frase.

apt-get -qq moo
Have you mooed today?

Se quiser ver apenas a vaquinha, recorra novamente ao comando grep:

apt-get moo | grep -iv "moo"
                 (__) 
                 (oo) 
           /------\/ 
          / |    ||   
         *  /\---/\ 
            ~~   ~~   

Ovos de páscoa no aptitude, do Debian

Easter egg dying by Luz Bratcher
O aptitude é o gerenciador de pacotes padrão da distro Linux Debian e, portanto, já está instalado.
Se você quiser, pode experimentá-lo no Ubuntu. Mas vai precisar instalá-lo:

sudo apt-get install aptitude

Uma vez instalado, podemos começar a mugir…
Veja que o aptitude, conforme a história contado ao final deste artigo, tem muito a ver com o apt-get. Veja este comando:

aptitude help | grep -i poderes
                  Este aptitude não contém Poderes de Super Vaca.
aptitude moo
Não existem Ovos de Páscoa neste programa.

Eu sei… a resposta é desanimadora.
Vamos persistir!

aptitude -v moo
Realmente não existem Ovos de Páscoa neste programa.

Vamos continuar…

aptitude -vv moo
Eu já não lhe disse que não existem Ovos de Páscoa neste programa?

Parece que o programa tem algo a esconder…

aptitude -vvv moo
Pare com isso!

Após a advertência, o programa parece ceder à nossa insistência.

aptitude -vvvv moo
Ok, ok, se eu lhe der um Ovo de Páscoa você irá embora?

Claro que eu irei… 😉

aptitude -vvvvv moo
Tudo bem, você ganhou.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------

Quem leu “O Pequeno Príncipe”, a célebre obra de Antoine de Saint-Exupéry, já sabe de que trata a imagem.
Ainda assim, recomendo tentar mais um pouco…

aptitude -vvvvvv moo
O que é isso? Isso é um elefante sendo comido por uma cobra, é claro.

Ainda não está satisfeito(a)? Então conheça história deste ovo de páscoa, contada pelo desenvolvedor.
ovos de páscoa por  Praktyczny Przewodnik

A história da Super Vaca

De acordo com o desenvolvedor do aplicativo apt-get, Jason Gunthorpe, há um lenda em torno dos poderes da vaca.
Há um tempo atrás, um desenvolvedor era conhecido por anunciar sua entrada no IRC com um ‘moo’ e era comum as pessoas responderem mugindo de volta e contanto algumas piadas de vacas.
Quando o apt-get estava em seu desenvolvimento inicial, o desenvolvedor incluiu a linha Este APT tem Poderes de Super Vaca (em inglês) ao final do texto da ajuda.
Outro programador inclui o comando apt-get moo — e assim nascia o ovo de páscoa, tal como você já o conhece.
Os itens contidos no aptitude, são possivelmente uma homenagem, uma vez que foi desenvolvido depois e é substancialmente baseado nas bibliotecas do apt.
Atualmente, há outros programas no Linux que oferecem ovos de páscoa com o tema da vaca. É só procurar.

referências:

Como checar se a versão do Ubuntu é desktop ou server

Quem atua no suporte técnico pode ter a necessidade de saber, de maneira simplificada, se a versão do Ubuntu que se encontra à sua frente é uma versão para desktop ou para servidor — com todos os pacotes e configurações inerentes àquela distribuição.
Ninguém quer nada complicado — portanto vou mostrar 2 opções do comando dpkg (que podem ser copiados e colados) a ser executados no seu terminal e que vão mostrar o que você tem pra brincar.

Liste os pacotes com dpkg

O comando dpkg permite listar os pacotes instalados no seu sistema, com o parâmetro -l:

dpkg -l *buntu-desk*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Nome           Versão       Arquitectura Descrição
+++-==============-============-============-=================================
ii  xubuntu-deskto 2.180        i386         Xubuntu desktop system

No exemplo acima, o comando mostra que o sistema instalado é Xubuntu-desktop. Se fosse servidor, a saída, na última linha teria a string -server.
Outra forma de usar o comando, envolve o uso do comando grep (vale a pena aprender a usá-lo!):

dpkg -l xubuntu* | grep desktop

dpkg -l xubuntu* | grep desktop
Note que eu usei a string xubuntu, porque esta é a distro que eu estou usando aqui. Você deve adequar o comando à sua situação aí.
Enfim, se ao fazer a busca pela palavra desktop, o retorno foi zero, tente fazer a busca pela palavra server.

LEIA MAIS

Comando apropos ajuda a lembrar nomes de outros comandos no Linux

O apropos faz uma busca nas páginas do manual do Linux pelos termos que o usuário “perguntou” – e mostra os comandos relacionados àquela pesquisa.
Desenvolvido por Wilford, Polacco e Watson, o apropos lê a introdução a cada comando descrito no manual do Linux, buscando por palavras-chave que você definiu na linha de comando.
Assim, você pode encontrar um comando, cujo nome não sabe ou não se lembra mais, procurando pelo que “ele faz”.
Vamos aos exemplos?

Exemplos do comando apropos

Se você quiser encontrar os comandos, no Linux, que tratam imagens, pode usar o apropos desta forma:

apropos image
acetoneiso (1)       - feature-rich graphical application to mount and manage CD/DVD images
carousel (6x)        - displays multiple images rotating in a circular formation
cjpeg (1)            - compress an image file to a JPEG file
cwebp (1)            - compress an image file to a WebP file
devdump (1)          - Utility programs for dumping and verifying iso9660 images.
djpeg (1)            - decompress a JPEG file to an image file
dwebp (1)            - decompress a WebP file to an image file
e2image (8)          - Save critical ext2/ext3/ext4 filesystem metadata to a file

Acima, há um resultado parcial, em que são exibidos comandos e funções relacionados à palavra “image”.
Contudo, nem todos os itens listados, tratam de imagens gráficas. Alguns tratam de imagens de disco, que é uma coisa totalmente diferente.
Se você se refere a imagens gráficas, de um determinado tipo, pode ser um pouco mais específico:

apropos jpeg
cjpeg (1)            - compress an image file to a JPEG file
djpeg (1)            - decompress a JPEG file to an image file
jpegexiforient (1)   - reads or writes the Exif Orientation Tag
jpegtran (1)         - lossless transformation of JPEG files
pdftocairo (1)       - Portable Document Format (PDF) to PNG/JPEG/TIFF/PDF/PS/EPS/SVG using cairo
rdjpgcom (1)         - display text comments from a JPEG file
wrjpgcom (1)         - insert text comments into a JPEG file

Ou, ainda, pode acrescentar o comando grep, para filtrar resultados:

apropos image | grep -i jpeg

apropos grep image
clique para ampliar

Em outros casos, o comando less, pode ser mais adequado:

apropos editor | less
atobm (1)            - bitmap editor and converter utilities for the X Win...
audacity (1)         - Graphical cross-platform audio editor
bitmap (1)           - bitmap editor and converter utilities for the X Win...
bmtoa (1)            - bitmap editor and converter utilities for the X Win...
easytag (1)          - Tag editor for MP3 and Ogg Vorbis files
ed (1)               - line-oriented text editor
editor (1)           - Vi IMproved, a programmers text editor
editres (1)          - a dynamic resource editor for X Toolkit applications
ex (1)               - Vi IMproved, a programmers text editor
id3tool (1)          - a command line editor for id3 tags.
:

Espero que este texto o ajude a explorar cada vez mais o Linux e seus inúmeros comandos.

O comando grep

O grep pode ser visto como uma forma simplificada de consulta a um banco de dados em texto puro, em que cada linha representa um registro.
O utilitário pode ser usado para retirar um conjunto de strings (cadeias de caracteres) do resultado de um comando dado ou de um arquivo texto, por mais longo que seja.
Este artigo reúne uma coletânea de exemplos, que irão ajudar a entender bem o funcionamento do grep.

LEIA MAIS:

Use a caixa de busca para descobrir outros artigos que fazem uso de exemplos com o comando grep.

Exemplo básico de uso do comando grep

Para pedir uma lista dos processos em execução na máquina, podemos usar o comando ‘ps aux’.
Mas a lista pode ser muito extensa e você só quer saber (por exemplo) do ‘NetworkManager’:


ps aux | grep -i net

Observe que ele exibe e destaca todas as strings contendo a cadeia de caracteres “net” (veja a imagem, abaixo).
Captura de tela de 2013-02-22 13:42:27
Entenda o que foi feito:

  • O comando ps aux exibe todos os processos em execução.
  • O operador | redireciona os resultados do comando ps para o grep, que filtra as ocorrências de “net” do resultado.
  • O parâmetro -i, pede ao programa que ignore se as letras estão em maiúsculas/minúsculas.

Use o grep para filtrar resultados de arquivos de log do sistema

Certos arquivos de log do sistema são muito extensos e podem conter uma quantidade imensurável de informações irrelevantes pra sua situação.
O grep pode ajudar a encontrar “uma agulha no palheiro”.
Vejamos, como exemplo o arquivo de log /var/log/dmesg que contém informações atuais do que está ocorrendo no seu sistema.
Vamos visualizar seu conteúdo – deixando de fora tudo o que não se refere à nossa interface de rede eth0:


cat /var/log/dmesg | grep eth0

Captura de tela de 2013-02-22 14:09:19

Use o egrep para filtrar resultados com operadores lógicos

Outros comandos, como lshw, também retornam uma lista muito extensa e podem demorar muito para finalizar.
O interessante, aqui, é direcionar o resultado do comando para um arquivo texto, que será usado com muito mais facilidade.
Com o seguinte comando, você cria o arquivo lshw.log contendo o resultado do lshw:


sudo lshw > lshw.log

Este procedimento traz as vantagens de não precisar mais invocar o sudo, para obter o resultado do lshw e a velocidade com que o sistema lê e exibe o texto do lshw.log.
A seguir vamos usar uma versão diferente do grep, o egrep, para filtrar os resultados que se referem às nossas interfaces de rede eth0 e wlan0:


egrep -C 2 -i '(eth|wlan)0' lshw.log

Olha a explicação do comando acima:

  • -C 2 — inclui as 2 linhas acima e as 2 linhas abaixo daquela em que foi encontrada a string desejada.
    Assim você sabe em que contexto o resultado está inserido.
  • -i — desativa a sensibilidade às ‘caixas’, ou seja, tanto faz se os caracteres estiverem em minúsculas ou maiúsculas.
  • o operador lógico | ou pipe — Desde que a string termine com ‘0’, tanto faz que seja ‘eth0’ ou ‘wlan0’.
    Assim, ficam incluídos os resultados referentes à interface de rede a cabo e sem fio.

Captura de tela de 2013-02-22 14:34:04

LEIA MAIS:

Como encontrar arquivos com o comando grep

Você pode usar o utilitário também para encontrar arquivos de texto pelo seu conteúdo.
Para pesquisar recursivamente no diretório atual por arquivos que contenham a palavra “firefox”, use-o da seguinte forma:


grep -iR 'firefox' *.conf

comando grep para encontrar arquivos por conteúdo

Conclusão

Como dicas finais, ao fazer a pesquisa dentro de arquivos grandes, gosto de usar os parâmetros ‘-n’ e ‘--color‘.
O primeiro numera as linhas, tornando mais fácil, ao abrir o arquivo, encontrar algo que eu desejo alterar.
O segundo mostra a saída do comando em cores, o que também ajuda a discernir melhor os resultados.
Você pode obter mais informações sobre o comando ao executar o seu manual:


man grep

Divirta-se!