silversearcher-ag: Conoce el Google del terminal para realizar búsquedas en todo el sistema

Escrito por Sergio De Luz

silversearcher-ag es una herramienta completamente gratuita que nos va a servir para realizar búsquedas avanzadas en sistemas operativos basados en Linux. Gracias a silversearcher-ag, podremos realizar búsquedas de un mismo patrón o cadena de caracteres en múltiples archivos con tan solo ejecutar un único comando. En este artículo os vamos a enseñar cómo se puede instalar, y cómo funciona esta herramienta tan interesante.

¿Para qué me va a servir la herramienta silversearcher-ag?

Para buscar cadenas dentro de un archivo en sistemas Linux normalmente usamos herramientas como grep, que viene instalada siempre de manera predeterminada en la mayoría de sistemas operativos basados en Linux y Unix. La herramienta “ag” nos va a permitir búscar múltiples patrones o cadenas dentro de uno o varios ficheros, es decir, es una herramienta bastante potente, pero además, es muy rápida.

Algunos de los puntos fuertes de “ag” es que es más rápido que grep y ack, esto es debido a que esta herramienta utiliza Pthreads. Que “ag” utilice Pthreads significa que si tenemos una CPU con múltiples núcleos, podamos buscar de manera paralela en varios archivos a la vez, por lo que es capaz de buscar más rápido.

Cómo instalar la herramienta silversearcher-ag en mi sistema

Esta herramienta está disponible en la mayoría de repositorios de software de los diferentes sistemas operativos basados en Linux. Si por ejemplo estamos usando un sistema operativo como Ubuntu o Debian, podremos instalarlo poniendo la siguiente orden:

sudo apt install silversearcher-ag

Si usas un sistema basado en Red Hat como el propio Red Hat, CentOS o Fedora, lo tenemos disponible con el siguiente comando:

sudo apt install the_silver_search

Si usas un sistema basado en FreeBSD como FreeNAS, NAS4Free y otros, podrás instalarlo introduciendo el comando:

pkg install the_silver_search

Así puedes utilizar ag

La sintaxis que utiliza ag es bastante sencilla, no obstante, tenemos una grandísima cantidad de opciones para personalizar la orden a buscar. La sintaxis principal es la siguiene:

  • ag [opciones] patron_a_buscar archivos
  • ag [opciones] patron_a_buscar carpeta/

En el siguiente ejemplo he buscado la cadena “bron” en los archivos /etc/passwd y /etc/group, y justo debajo nos mostrará únicamente la línea donde haya coincidencia:


root@redeszonevm:/home/bron/dpinger# ag "bron" /etc/passwd /etc/group
/etc/passwd
37:bron:x:1000:1000:bron,,,:/home/bron:/bin/bash

/etc/group
18:cdrom:x:24:bron
19:floppy:x:25:bron
21:sudo:x:27:bron
22:audio:x:29:pulse,bron
23:dip:x:30:bron
33:video:x:44:bron
35:plugdev:x:46:bron
47:netdev:x:108:bron
52:bluetooth:x:113:bron
53:lpadmin:x:114:bron
57:scanner:x:118:saned,bron
61:bron:x:1000:

En el siguiente ejemplo he buscado la cadena “bron” en la carpeta /etc/ y justo debajo nos mostrará los archivos con coincidencias, y también la línea donde haya coincidencia:


root@redeszonevm:/home/bron/dpinger# ag "bron" /etc/
/etc/gshadow-
18:cdrom:*::bron
19:floppy:*::bron
22:audio:*::pulse,bron
23:dip:*::bron
33:video:*::bron
35:plugdev:*::bron
47:netdev:!::bron
52:bluetooth:!::bron
53:lpadmin:!::bron
57:scanner:!::saned,bron
61:bron:!::

/etc/group-
18:cdrom:x:24:bron
19:floppy:x:25:bron
22:audio:x:29:pulse,bron
23:dip:x:30:bron
33:video:x:44:bron
35:plugdev:x:46:bron
47:netdev:x:108:bron
52:bluetooth:x:113:bron
53:lpadmin:x:114:bron
57:scanner:x:118:saned,bron
61:bron:x:1000:

/etc/subuid
1:bron:100000:65536

/etc/gshadow
18:cdrom:*::bron
19:floppy:*::bron
21:sudo:*::bron
22:audio:*::pulse,bron
23:dip:*::bron
33:video:*::bron
35:plugdev:*::bron
47:netdev:!::bron
52:bluetooth:!::bron
53:lpadmin:!::bron
57:scanner:!::saned,bron
61:bron:!::

/etc/passwd-
37:bron:x:1000:1000:bron,,,:/home/bron:/bin/bash

/etc/subgid
1:bron:100000:65536

/etc/passwd
37:bron:x:1000:1000:bron,,,:/home/bron:/bin/bash

/etc/group
18:cdrom:x:24:bron
19:floppy:x:25:bron
21:sudo:x:27:bron
22:audio:x:29:pulse,bron
23:dip:x:30:bron
33:video:x:44:bron
35:plugdev:x:46:bron
47:netdev:x:108:bron
52:bluetooth:x:113:bron
53:lpadmin:x:114:bron
57:scanner:x:118:saned,bron
61:bron:x:1000:

/etc/shadow
37:bron:$6$SZaWSA89$UZoM3scSMD17lcfFBML7CIHPKms75Piu.Ez4mfpcVyTMtPgYaFF6yGx4k7qgP9K0g3VOIA2GAJWHkp4OhWzj/.:17434:0:99999:7:::

/etc/shadow-
37:bron:$6$SZaWSA89$UZoM3scSMD17lcfFBML7CIHPKms75Piu.Ez4mfpcVyTMtPgYaFF6yGx4k7qgP9K0g3VOIA2GAJWHkp4OhWzj/.:17434:0:99999:7:::
root@redeszonevm:/home/bron/dpinger#

También podemos pasarle diferentes argumentos a ag, como por ejemplo que nos indique el número de coincidencias que haya en un determinado archivo. En el ejemplo anterior tendríamos esta salida:

oot@redeszonevm:/home/bron/dpinger# ag -c "bron" /etc/
/etc/gshadow-:11
/etc/group-:11
/etc/subuid:1
/etc/gshadow:12
/etc/passwd-:3
/etc/subgid:1
/etc/passwd:3
/etc/group:12
/etc/shadow:1
/etc/shadow-:1
root@redeszonevm:/home/bron/dpinger#

Esta potente herramienta tiene una ayuda muy completa, podremos ejecutar la siguiente orden para ejecutar la ayuda básica:

ag --help

Y si necesitas saber exactamente cómo funciona cada una de las opciones, puedes entrar directamente en el manual:

man ag

Os recomendamos acceder a nuestra sección de GNU/Linux donde encontraréis una gran cantidad de manuales y herramientas.

Fuente > Cyberciti