El sistema operativo Linux le permite buscar tanto estructuras de directorios como archivos de directorios para coincidencias de cadenas de texto específicas. Una herramienta común que nos ayuda a lograr estas búsquedas en directorios es un grep (impresión de expresión regular global ) dominio. El uso de expresiones regulares de grep hace posible iniciar cualquier búsqueda de patrón de cadena hacia una salida textual coincidente en la línea de comando.
[ También te puede interesar:Ripgrep:la herramienta de búsqueda de línea de comandos más rápida para Linux ]
Sin embargo, los inconvenientes de grep están en su velocidad y características no flexibles. Aquí es donde ack la herramienta se hace cargo. Brinda búsquedas rápidas que se extienden a las búsquedas en el directorio del código fuente mientras le brinda a un usuario de Linux la flexibilidad de excluir ciertos resultados de los resultados de búsqueda.
Cómo instalar Ack en Linux
Cualquier plataforma compatible con Perl puede acomodar el ack herramienta de búsqueda. Lo instalamos haciendo referencia a su paquete principal, ack-grep .
$ sudo apt-get install ack-grep [On Debian, Ubuntu and Mint] $ sudo yum install ack-grep [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a sys-apps/ack-grep [On Gentoo Linux] $ sudo pacman -S ack-grep [On Arch Linux] $ sudo zypper install ack-grep [On OpenSUSE]
Búsqueda de directorio de Ack
Desde retro se atribuye a estar orientado al código fuente, podemos demostrar su destreza en la búsqueda de patrones de cadenas a través de un directorio de código fuente. Github es un recurso de renombre para miles de directorios de código fuente. Un directorio de código fuente de proyecto ideal para esta guía de artículos es el proyecto neovim.
Instalar Git en Linux
$ sudo apt-get install git [On Debian, Ubuntu and Mint] $ sudo yum install git [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a sys-apps/git [On Gentoo Linux] $ sudo pacman -S git [On Arch Linux] $ sudo zypper install git [On OpenSUSE]
Proyecto Clonar Neovim
Los muchos tipos de archivos diferentes en este proyecto de editor de texto de neovim son necesarios para nuestra guía de artículos.
$ git clone https://github.com/neovim/neovim.git
Navegue hasta neovim directorio clonado para iniciar nuestro tutorial.
$ cd neovim && ls
El directorio de nivel superior enumerado expone los archivos de rebajas (.md)
, archivos de texto (.txt)
y un archivo YAML.
Implementación de Comandos de Búsqueda Simple Ack
Dado que la mayoría de las consultas de búsqueda desde la ventana del terminal de Linux conducen a un desplazamiento incontrolable debido a los resultados infinitos, podemos canalizar estos resultados de búsqueda a "menos ” para instancias de resultados que excedan el tamaño normal de la ventana del terminal.
$ echo '--pager=less -RFX' >> ~/.ackrc
El reconocimiento anterior El comando de configuración maneja de manera inteligente las salidas de resultados desbordadas.
Encontrar el número total de archivos en un directorio
Este primer ejemplo de comando nos ayuda a distinguir la eficiencia lógica de ack buscar desde grep búsqueda. A través de grep , podemos averiguar el número total de archivos en el neovim clonado proyecto a través del siguiente comando:
$ find . | wc -l
Ack solo contará los archivos que crea que son lógicamente relevantes, por lo que su resultado será diferente.
$ ack -f | wc -l
El 7% anterior (
Encontrar una variación de patrón de cadena específica de un directorio
Intentemos consultar las ocurrencias instantáneas del patrón de cadena "restringir ”.
$ ack restrict
Los resultados anteriores apuntan a los números de línea exactos en los archivos que contienen la coincidencia del patrón de cadena. El patrón de pantalla generado da como resultado "restringir ” también son partes de palabras como restringido y restricción .
Encontrar una palabra de patrón de cadena específico de un directorio
Si no está interesado en que un resultado de búsqueda aparezca como una variación sino como una palabra completa, deberá implementar sus patrones de cadena de búsqueda de manera diferente.
$ ack -w restrict
Como puede ver, el patrón de cadena de búsqueda busca "restringir ” como una palabra completa y no como parte de ninguna otra palabra.
Encontrar un patrón de cadena específico a partir de un tipo de archivo específico
Tal vez desee que sus búsquedas de patrones de cadenas se dirijan a un archivo específico como Python (--python)
archivo, c (--c)
archivo, vim (--vim)
archivo o cualquier otro tipo de archivo, su consulta de patrón de cadena debe hacer referencia al tipo de archivo que busca.
$ ack -w --python restrict
El resultado del comando anterior apunta a la aparición de la palabra "restringir ” en línea 110 dentro del archivo Python “src/clint.py ”.
Encontrar la ocurrencia total de una búsqueda de patrón de cadena en cada archivo
Dado que el neovim clonado directorio que estamos usando tiene diferentes tipos de archivos, este comando cuenta la aparición de una búsqueda de patrón de cadena específica (restringir ) en cada uno de estos tipos de archivos.
$ ack -c restrict
Controlar la salida de una búsqueda de patrón de cadena
La salida del comando anterior incluye archivos con coincidencias de patrón de cadena cero para la entrada de cadena especificada. Para evitarlos, el siguiente comando imprime el total de líneas de archivo que coinciden con una entrada de patrón de cadena específica.
$ ack -ch restrict
Podemos hacer que el resultado anterior sea más pequeño y preciso solicitando que el resultado de la búsqueda solo considere palabras completas y no variantes de palabras.
$ ack -ch -w restrict
También podemos reducir el resultado del comando anterior para considerar solo los archivos de Python:
$ ack -ch -w --python restrict
También podemos usar el tiempo comando para monitorear la velocidad de nuestras búsquedas:
$ time ack -ch restrict
Al ser más específicos en nuestros criterios de patrones de búsqueda, obtendremos un resultado más rápido, como se demuestra a continuación, en comparación con los resultados anteriores.
$ time ack -ch -w --python restrict
También podríamos generar los nombres de archivo reales que coincidieron con un patrón de búsqueda.
$ ack -f --python
El patrón de búsqueda ack también podría apuntar a la convención de nomenclatura de un archivo. Cualquier C archivo con el “log ” puede coincidir con el siguiente comando:
$ ack -g log --cc
El atrás La herramienta de búsqueda es muy flexible cuando se maneja bajo un directorio de código fuente. Todavía puede adoptar su uso para archivos dentro de su entorno Linux. Es extensible y rápido. Usa el man ack
Comando para encontrar más opciones para explorar esta herramienta rápida y liviana.