Conheça estes 7 motivos para abandonar o comando grep e passar a usar o ack.

Tecnicamente, o ack foi projetado como ferramenta de busca dentro de arquivos texto — tendo como público-alvo os programadores.
Entre estes, o utilitário é mais eficiente do que o comando grep.
Neste texto, vou mostrar algumas vantagens de uso do ack e como instalar a ferramenta no Linux (caso ela já não esteja instalada aí).
Entre as vantagens de usar o ack — para fazer pesquisa dentro do código fonte — a documentação oficial cita:

  1. É rápido — por que se restringe a strings que “façam sentido” retornar. As expressões regulares em Perl tem alto índice de otimização.
  2. É portável — por ser escrito em Perl e não ter outras dependências além do Perl 5, pode rodar no Windows, MAC, UNIX e nos vários sabores do BSD e do Linux.
  3. Ignora automaticamente diretórios irrelevantes para a sua busca — a recursividade é seu comportamento padrão, mas ele ignora arquivos .git, .svn e diretórios CVS e VCS. Lógico que você pode mudar isto manualmente.
    Como exemplo da praticidade, a documentação compara os dois comandos de busca, a seguir, que tem resultados semelhantes:

    grep pattern $(find . -type f | grep -v '\.git')
    

    ou

    ack pattern
    

    Qual você prefere?

  4. Melhores resultados — como ele prioriza arquivos de código fonte, você obtém menos resultados irrelevantes. Ele pula até arquivos de backup.
  5. Separa fácil os arquivos — para quem tem um projeto envolvendo mais de uma linguagem de programação (muito comum entre web developers).
    É fácil adicionar –python, para restringir as buscas dentro de arquivos da linguagem Python, ou –nohtml evitar arquivos HTML.

    O ack tem detecção de tipos de arquivos, muito além da leitura da extensão do nome.

    Veja outra comparação entre comandos grep e ack, para realizar buscas dentro de arquivos Perl:

    grep pattern $(find . -name '*.pl' -or -name '*.pm' -or -name '*.pod' | grep -v .git)
    
    ack --perl pattern 
    

    Novamente, qual dos dois comandos, acima, você prefere usar?
    Note que o sucesso do grep, no primeiro exemplo, depende do uso do comando find (leia mais sobre ele aqui). O ack é visivelmente mais eficiente, neste caso.

  6. Listas de arquivos — podem ser criadas, antes mesmo de qualquer busca.
    Esta utilidade vai agradar até quem não é programador. Com o comando, abaixo, o ack relaciona todos os arquivos da linguagem PHP, em um diretório, recursivamente:

    ack -f --php
    

    Você gastaria um pouco mais de seus dedos para realizar esta tarefa com o find…

  7. O ack tem highlighting, que permite realçar palavras-chave nos resultados das buscas.

linux terminal ack command
Por fim, A palavra “ack” é menor do que “grep”, o que te poupa alguns preciosos milésimos de segundos na digitação a cada vez que precisar realizar uma busca.

Como instalar o ack no sistema

O ack está disponível nos repositórios das principais distribuições (se não todas) Linux e UNIX (BSD).
Infelizmente, no momento em que escrevo este texto, ele ainda não faz parte do conjunto de programas utilitários padrão, que já “estão lá”, logo após a instalação.
Contudo, ele é super fácil de instalar.
Quem usa o Debian, pode usar o apt, para fazer o trabalho:

sudo apt update
sudo apt install ack

No Ubuntu 16.04 LTS, o nome do pacote (transitório) é ack-grep. Nas futuras atualizações ele deve ser renomeado para apenas “ack”.
O pessoal do Fedora, pode instalar com o dnf:

sudo dnf install ack

No FreeBSD, use os ports e instale o pacote p5-ack.
Leia outros textos sobre o assunto, tocando ou clicando na tag ack, para conhecer melhor a ferramenta.
Além disto, não esqueça de compartilhar o texto nas redes sociais. 😉

Referências

https://beyondgrep.com/.
http://www.activestate.com/blog/2016/12/grep-losing-its-grip.

Conteúdo relacionado pelo Google

Como obter informações sobre o hardware de vídeo no Linux

Quando você precisa relatar algum problema, para conseguir ajuda, pode ser necessário inquirir o seu sistema para saber exatamente qual o modelo de dispositivo em uso.
Você pode obter informações detalhadas sobre a sua placa de vídeo, seja ela dedicada, separada ou integrada ao restante do hardware, com os comandos lspci e lshw.
amd-radeon-graphics-badge-on-dell-laptop
Se quiser entender melhor o funcionamento do lshw, leia este artigo.
Ambos podem ser usados para obter informações sobre diversos aspectos do seu hardware. Neste post, vou me concentrar em obter dados apenas do hardware de vídeo.
O comando grep, neste caso, é essencial para filtrar as informações obtidas e exibir apenas o que interessa. Se tiver dúvidas, leia mais sobre ele aqui.

Como obter informações sobre a placa de vídeo com o comando lspci

O comando é um utilitário voltado para exibir informações sobre o os buses PCI presentes no sistema, bem como os dispositivos conectados a eles.
Com o uso de algumas opções, na linha de comando, é possível obter um saída mais resumida.
É possível também obter uma saída de informações mais verbosa — voltada para hackers mais experientes.
Alguns dados do hardware podem estar disponíveis apenas para usuários com privilégios administrativos — nestes casos, use o comando su ou sudo.
Nos exemplos dados, neste artigo, os comandos são executados pelo superusuário.
Você pode usar o comando lspci, acompanhado das opções ‘-v’, ‘-vv’ ou ‘-vvv’ para obter um resultado cada vez mais abundante de informações. A primeira opção ativa a verbosidade, a segunda aumenta e a última ativa o nível máximo de informações.
Veja um exemplo:

lspci -v | grep -A 20 -i display
04:00.0 Display controller [0380]: Advanced Micro Devices, Inc. [AMD/ATI] Topaz XT [Radeon R7 M260/M265] [1002:6900]
	Subsystem: Dell Device [1028:0643]
	Physical Slot: 4
	Flags: fast devsel, IRQ 7
	Memory at b0000000 (64-bit, prefetchable) [disabled] [size=256M]
	Memory at c0000000 (64-bit, prefetchable) [disabled] [size=2M]
	I/O ports at 3000 [disabled] [size=256]
	Memory at c2000000 (32-bit, non-prefetchable) [disabled] [size=256K]
	Expansion ROM at c2040000 [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [58] Express Legacy Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [150] Advanced Error Reporting
	Capabilities: [270] #19
	Capabilities: [2b0] Address Translation Service (ATS)
	Capabilities: [2c0] #13
	Capabilities: [2d0] #1b

Use um número maior para a opção ‘-A’, caso desconfie que haja mais algumas linhas de informações sobre o dispositivo.
As primeiras linhas costumam ser mais do que suficiente para informar o modelo exato de placa de vídeo em uso no sistema.

Como obter informações da placa de vídeo com o comando lshw

Como ele demora um pouco para pesquisar o hardware, costumo guardar suas informações em um arquivo texto, que posso ler sem a necessidade de “invocar superpoderes” e com mais rapidez:

sudo lshw > lshw.log

Para obter informações exclusivamente sobre a classe display, use o comando assim:

lshw -class display
  *-display               
       description: VGA compatible controller
       product: Broadwell-U Integrated Graphics
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 09
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:65 memory:c1000000-c1ffffff memory:d0000000-dfffffff ioport:5000(size=64)
  *-display UNCLAIMED
       description: Display controller
       product: Topaz XT [Radeon R7 M260/M265]
       vendor: Advanced Micro Devices, Inc. [AMD/ATI]
       physical id: 0
       bus info: pci@0000:04:00.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: pm pciexpress msi cap_list
       configuration: latency=0
       resources: memory:b0000000-bfffffff memory:c0000000-c01fffff ioport:3000(size=256) memory:c2000000-c203ffff memory:c2040000-c205ffff

De posse deste resultado, é possível procurar informações sobre a sua placa gráfica no Google ou em fóruns específicos usando os nomes nos campos product e vendor.

No caso de uma placa de vídeo integrada à placa-mãe, você provavelmente só irá conseguir obter informações úteis se informar o modelo da placa-mãe.
Alguns fabricantes não disponibilizam informações ou manuais sobre a placa de vídeo, em separado, nestes casos.

O comando, a seguir, oferece os dados referentes à placa mãe ou motherboard:

lshw -class bus
Busca do google por nome do dispositivo
Busca do google por nome do dispositivo

Como obter informações da placa de vídeo com o comando dmidecode

O dmidecode pode parecer redundante, depois de falarmos do lshw — uma vez que este último também pesquisa na tabela DMI.
A saída é dada em formatos diferentes, contudo. Vale a pena abordar este comando também.
Veja como obter dados da placa — útil, quando a placa de vídeo é integrada:

dmidecode -t baseboard | grep -B 2 -i product 
Base Board Information
	Manufacturer: Dell Inc.
	Product Name: 0YDTG3

Ou use a opção que segue para obter informações mais detalhadas da placa mãe:

dmidecode --type 2
# dmidecode 2.12
SMBIOS 2.7 present.

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
	Manufacturer: Dell Inc.
	Product Name: 0YDTG3
	Version: A02
	Serial Number: .SF5WERT3.GR9983062FS132.
	Asset Tag: Not Specified
	Features:
		Board is a hosting board
		Board is replaceable
	Location In Chassis: Type2 - Board Chassis Location
	Chassis Handle: 0x0003
	Type: Motherboard
	Contained Object Handles: 0

Dispositivos on board podem ser exibidos com a seguinte opção:

dmidecode --type 10

Sua lista pode ser maior do que a minha:

# dmidecode 2.12
SMBIOS 2.7 present.

Handle 0x0018, DMI type 10, 6 bytes
On Board Device Information
	Type: Video
	Status: Disabled
	Description: Intel Video Graphics Controller

Use a opção ‘–type 41’, para obter uma relação maior.

Conteúdo relacionado pelo Google

Como criar scripts a partir do histórico de comandos do MySQL

As queries ou consultas feitas no cliente interativo MySQL, que funcionam bem, podem ser facilmente convertidas em scripts para automatizar suas tarefas ou adiantar o seu trabalho como desenvolvedor — seja qual for a sua linguagem de programação.
Logo MySQL sobre um fundo com um lago e um barco
A solução relatada neste artigo permite reusar as queries, de uma sessão anterior do MySQL, que estão funcionando para você, em um script.

Use um arquivo tee ou o histórico do MySQL

Uma das formas de reusar as queries MySQL, dentro de um script, é buscá-las a partir de um arquivo tee.
No artigo, Como guardar o histórico dos comandos no MySQL em um arquivo externo, eu explico o procedimento em detalhes.
Outra forma, é buscar as queries no arquivo de histórico padrão do MySQL, importar o texto e ir retirando tudo o que não serve ao seu script.
Neste caso, comece por digitar suas queries no cliente MySQL, normalmente — se certificando de que estejam funcionando sintaticamente e entregando os resultados desejados.
Em seguida, saia do MySQL, com o comando quit e liste o arquivo do histórico da sua sessão, da linha de comando:

cat .mysql_history

No Linux, o arquivo do histórico costuma ficar armazenado no seu diretório home.
Experimente combinar o comando cat com o comando grep, para obter resultados mais precisos em relação ao que te interessa:

cat .mysql_history grep -e select

Exemplo de execução do comando cat com o comando grep
Clique, para ver detalhes.

O arquivo do histórico, bem como aquele criado pelo comando tee, pode ser aberto no seu editor de scripts favorito, de onde você pode extrair as queries que deseja e editá-las como bem entender.
captura de tela komodo editor

Conteúdo relacionado pelo Google

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:

Conteúdo relacionado pelo Google

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

Conteúdo relacionado pelo Google