GNU/Linux >> Tutoriales Linux >  >> Linux

Usando el comando ripgrep (rg) en Linux

ripgrep es un excelente resultado del esfuerzo RIIR (reescríbalo en Rust) que se lleva a cabo en la comunidad de código abierto. Está destinado a ser un reemplazo superior para el clásico comando grep.

La sintaxis para usar ripgrep es la siguiente:

rg <pattern> [files/directories]

Con ripgrep, no es necesario mencionar un nombre de archivo. Cuando no se proporciona un nombre de archivo, se buscan todos los archivos. Esto es increíblemente útil si no sabe qué archivo contiene el patrón que busca.

También puede usar grep para buscar en todos los archivos, pero ripgrep lo hace sin ningún esfuerzo adicional.

¿Qué es ripgrep?

ripgrep es una herramienta recursiva de coincidencia de patrones de expresiones regulares que considera su gitignore. Si tiene archivos, extensiones o directorios específicos en su gitignore, ripgrep los ignorará, acelerando el tiempo de ejecución.

Algunas características que hacen que ripgrep se destaque son las siguientes:

  • Busca patrones recursivamente en directorios
  • Color resaltado en la salida
  • Admite una gran variedad de formatos de codificación como UTF-8, SHIFT_JIS
  • Capacidad de buscar en archivos zip comprimidos
  • Ignora los archivos ocultos de forma predeterminada y usa su archivo gitignore para una búsqueda más rápida

Puede considerarlo como grep, pero principalmente destinado a buscar archivos/contenido de archivos en lugar de la secuencia de bytes sin procesar con la que trata grep.

Instalar ripgrep

Si bien grep viene preinstalado en la mayoría de los sistemas Linux, ripgrep no tiene ese privilegio.

Sin embargo, está disponible en los repositorios de todas las principales distribuciones de Linux y puede usar el administrador de paquetes para instalarlo.

Si eres usuario de Arch Linux, ya sabes cómo instalar paquetes :p, pero aún así, este es el comando que debes usar:

pacman -S ripgrep

Los usuarios de Gentoo pueden instalar ripgrep con el siguiente comando:

emerge sys-apps/ripgrep

Si usa Fedora o Red Hat, incline su sombrero un poco mientras escribe este comando en su terminal:

sudo dnf install ripgrep

Los usuarios de openSUSE (15.1 y posteriores) deben usar el siguiente comando en su terminal:

sudo zypper install ripgrep

Para usuarios que usan Debian Buster (v10) o posterior, use apt. Ubuntu Cosmic Cuttlefish (18.10) o posterior también puede usar los repositorios oficiales de la distribución.

sudo apt install ripgrep

Usando el comando ripgrep

Si está familiarizado con el uso del comando grep, encontrará que ripgrep funciona de manera similar. Le proporciona una cadena de búsqueda y un nombre de archivo, y buscará el archivo y le mostrará dónde la cadena de entrada coincidió con el contenido del archivo.

Para este tutorial, he clonado el repositorio del proyecto Dust y ejecutaré los comandos dentro del repositorio clonado.

Búsquedas básicas

Ejemplo de búsqueda de la palabra descripción en el archivo Cargo.html:

$ rg description Cargo.toml
3:description = "A more intuitive version of du"
53:extended-description = """\

Como era de esperar, la herramienta ripgrep buscó en el archivo que especifiqué y mostró los archivos con texto coincidente y el número de línea.

Si especifica varios archivos para buscar (si no especifica ningún archivo, buscará todos), ripgrep también determinará el nombre de archivo cuyo contenido coincida.

Alternativamente, también puede usar la opción '--file', que contiene el patrón que desea hacer coincidir. Cuando busca regularmente un conjunto de patrones que coincidan, puede almacenarlo en un archivo y especificarlo usando la opción '--file'.

Búsqueda contextual

A veces, es bueno tener un contexto de la línea coincidente, especialmente cuando se busca en un repositorio de código. La opción '-C' o '--context' ayuda aquí. Esta opción acepta un valor numérico y muestra líneas antes y después del partido.

Puede haber ocasiones en las que solo desee ver unas pocas líneas arriba, incluida la línea coincidente. A veces, desea las líneas solo debajo, incluida la que coincide.

Puede usar la opción '-A', abreviatura de '--after-context', y un valor numérico para mostrar líneas después de cada coincidencia.

Y para las líneas antes de cada coincidencia, puede usar la opción '-B', abreviatura de '--before-context', junto con un valor numérico.

Columnas

Hay varias opciones con respecto a las columnas que proporciona ripgrep.

Apreciará el indicador '--column' si es un usuario de vim. Imprime la 'línea:columna' del texto coincidente en el archivo.

Otra opción relacionada con las columnas es '-M' o '--max-columns', que toma un valor numérico para el número máximo de columnas. Si las columnas de líneas coincidentes exceden, le informará que se omitió una línea en particular para que no se enviara a la terminal.

Varios

Hay varias opciones que puede usar con ripgrep.

Puede usar la opción '-s' o '--sensible a mayúsculas y minúsculas' para hacer coincidir el texto con distinción de mayúsculas y minúsculas.

Si desea que no se distinga entre mayúsculas y minúsculas, puede usar el indicador '-i' o '--ignore-case'.

Si tiene una gran base de código, puede usar varios subprocesos para la coincidencia de patrones. Puede especificar hilos manualmente usando la opción '-j' o '--threads'; acepta un valor numérico.

$ rg -j 4 TODO

Puede haber ocasiones en las que desee excluir un patrón de los resultados de búsqueda. Para hacer eso, puede usar '-v' o '--invert-match' para excluir el patrón especificado.

ripgrep puede buscar texto en un archivo comprimido (si el archivo comprimido es un archivo de texto) usando el indicador '-z' o '--search-zip'. Este indicador suele ir acompañado del indicador '-a' que trata los archivos binarios como archivos de texto.

Conclusión

ripgrep es una herramienta fantástica que puede aprovechar, especialmente como programador en un entorno similar a UNIX.

ripgrep, aunque el nombre pueda sugerir lo contrario, no pretende reemplazar a grep porque se comporta de manera diferente. Sin embargo, ambas herramientas son útiles; depende de su caso de uso.


Linux
  1. Cómo reiniciar Linux usando la línea de comandos

  2. comando linux mv

  3. Linux du comando

  4. ¿Cómo matar un proceso en Linux usando el comando?

  5. Ejemplos de uso del comando dmsetup en Linux

Ripgrep:la herramienta de búsqueda de línea de comandos más rápida para Linux

Tutorial sobre el uso del comando Timeout en Linux

Programar trabajos en Linux con el comando 'at'

Usando el comando Watch en Linux

Buscar comando en Linux/UNIX

Usando cut en Linux Terminal