Descripción
El comando ack es una herramienta de búsqueda de texto diseñada especialmente para desarrolladores y administradores de sistemas. Su objetivo es encontrar cadenas de texto, expresiones regulares o patrones dentro de archivos de forma rápida e inteligente.
A primera vista puede parecer una alternativa a grep, pero su filosofía es diferente. Mientras que grep busca en cualquier archivo que le indiquemos, ack está pensado para trabajar con código fuente y proyectos de desarrollo, ignorando automáticamente directorios y archivos que normalmente no interesa analizar, como .git, node_modules, archivos binarios, copias de seguridad o ficheros temporales.
Esto hace que las búsquedas sean más rápidas, más limpias y mucho más cómodas cuando trabajamos sobre proyectos PHP, JavaScript, Python, Docker, WordPress o cualquier otro entorno de desarrollo.
Una de sus mayores ventajas es que reconoce automáticamente multitud de tipos de archivo, permitiendo realizar búsquedas únicamente sobre determinados lenguajes o tecnologías.
Instalación (si procede)
En muchas distribuciones no viene instalado por defecto.
Debian / Ubuntu
sudo apt update sudo apt install ack
Fedora
sudo dnf install ack
Arch Linux
sudo pacman -S ack
Verificar instalación
ack --version
Atributos y Parámetros
| Atributo | Descripción |
|---|---|
-i | Ignora mayúsculas y minúsculas. |
-w | Busca palabras completas. |
-l | Muestra únicamente los archivos que contienen coincidencias. |
-c | Muestra el número de coincidencias por archivo. |
--php | Busca únicamente en archivos PHP. |
--js | Busca únicamente en archivos JavaScript. |
--python | Busca únicamente en archivos Python. |
--ignore-dir | Ignora directorios específicos. |
-A N | Muestra N líneas posteriores a la coincidencia. |
-B N | Muestra N líneas anteriores a la coincidencia. |
-C N | Muestra N líneas antes y después de la coincidencia. |
-g | Busca nombres de archivos en lugar de contenido. |
--files-from | Utiliza una lista de archivos como origen de búsqueda. |
Ejemplos de Uso
Buscar una palabra dentro del directorio actual
ack "password"
Busca la palabra password dentro de todos los archivos compatibles encontrados desde el directorio actual.
Muy útil para localizar configuraciones, credenciales o variables concretas.
Buscar ignorando mayúsculas y minúsculas
ack -i "mysql"
Encontrará:
MySQL mysql MYSQL
Ideal cuando no conocemos exactamente cómo está escrito el término.
Buscar una función PHP
ack "function get_user"
Permite localizar rápidamente dónde está implementada una función concreta dentro de un proyecto.
Muy útil en WordPress, Laravel o proyectos PHP heredados.
Buscar únicamente en archivos PHP
ack --php "wp_insert_post"
Solo analizará archivos PHP.
Esto reduce muchísimo el ruido en proyectos grandes.
Buscar únicamente en archivos JavaScript
ack --js "fetch("
Perfecto para localizar llamadas AJAX o peticiones API dentro de aplicaciones frontend.
Buscar una variable de entorno
ack "DB_PASSWORD"
Permite localizar dónde se está utilizando una variable de configuración determinada.
Muy útil durante migraciones.
Buscar URLs antiguas
ack "api.antiguaempresa.com"
Cuando se cambia un dominio o una API, este tipo de búsqueda suele ahorrar mucho tiempo.
Encontrar todos los TODO pendientes
ack "TODO"
Muchos desarrolladores dejan anotaciones similares a:
// TODO: validar permisos
o
// TODO: implementar caché
Este comando permite encontrarlas todas rápidamente.
Mostrar únicamente los nombres de archivo
ack -l "password"
En lugar de mostrar las líneas coincidentes, únicamente mostrará los archivos afectados.
Muy útil cuando queremos revisar manualmente los resultados.
Contar coincidencias
ack -c "error"
Muestra cuántas veces aparece una cadena en cada archivo.
Puede utilizarse para auditorías rápidas o análisis de código.
Buscar una palabra completa
ack -w "user"
Evita encontrar:
users username superuser
Y solo devuelve la palabra exacta.
Mostrar contexto alrededor de la coincidencia
ack -C 3 "Exception"
Muestra tres líneas antes y tres líneas después de cada coincidencia.
Muy útil para analizar errores en código o configuraciones.
Buscar archivos por nombre
ack -g "docker"
A diferencia del comportamiento habitual, aquí no busca dentro de los archivos sino en sus nombres.
Puede utilizarse para localizar:
Dockerfile docker-compose.yml docker-entrypoint.sh
Ignorar directorios específicos
ack --ignore-dir=node_modules "axios"
Evita analizar directorios especialmente grandes.
Muy recomendable en proyectos Node.js.
Casos de uso reales
Auditoría de un proyecto WordPress
ack "wp_remote_post"
Permite localizar todas las llamadas HTTP realizadas por plugins o desarrollos personalizados.
Buscar credenciales expuestas
ack "password|secret|apikey|token"
Muy útil durante auditorías de seguridad internas.
Localizar llamadas a una API
ack "axios.post|fetch\("
Permite encontrar rápidamente los puntos de integración externos.
Buscar rutas hardcodeadas
ack "/var/www"
Especialmente útil durante migraciones entre servidores.
Analizar configuraciones Docker
ack --yaml "image:"
Permite revisar imágenes utilizadas en múltiples ficheros YAML.
Distribuciones Compatibles
Ubuntu, Debian, Fedora, Arch Linux, RHEL, openSUSE y derivadas.
Alternativas
- grep: Herramienta clásica incluida en prácticamente cualquier sistema Unix/Linux.
- rg (ripgrep): Alternativa moderna extremadamente rápida utilizada por herramientas como VSCode.
- ag (The Silver Searcher): Competidor directo de ack orientado a búsqueda en proyectos de desarrollo.
- find + grep: Combinación tradicional para búsquedas avanzadas.


Deja una respuesta