Comandos de Linux y habilidades de Shell
grep: Búsqueda en Linux como un profesional
grep sobrevive a cada actualización de la cadena de herramientas porque el trabajo nunca cambia: encuentre las líneas que importan dentro del texto que crece más rápido de lo que nadie lo limpia. Su verdadero poder es el vocabulario de banderas que convierte una búsqueda en una respuesta: contexto circundante, listas de nombres de archivos, coincidencias invertidas y códigos de salida en los que puede ramificarse un script de shell. Cuando un servidor se porta mal, la investigación comienza con grep y, más a menudo de lo que nadie admite, termina ahí también.
Puntos clave
- Búsqueda recursiva con un propósito: grep -rni 'fail2ban' /var/log --include='*.log' omite archivos binarios y comprimidos por sí solo; un simple grep -r sobre /var/log enseña esa lección de manera lenta.
- El contexto hace que las coincidencias sean legibles: -A 3 muestra las líneas posteriores, -B 3 antes, -C 5 ambas; -l enumera solo nombres de archivos, -c cuenta coincidencias por archivo y -L invierte la lista en lo que falta.
- Los códigos de salida son parte del contrato: 0 significa coincidencia, 1 significa no coincidencia, 2 significa error; un script que ejecuta grep -q e ignora esa distinción trata el éxito y el silencio de manera idéntica.
- Listas de archivos en cadena con seguridad nula: grep -rlZ 'ssl_protocols' /etc/nginx --include='*.conf' | xargs -0 -r ls -l; suelte el emparejamiento Z y -0 y el primer nombre de archivo con un espacio interrumpe la canalización.
- Utilice -E como nivel de expresión regular predeterminado para alternancia legible y utilice -P (variaciones, clases \d) solo cuando acepte que es una extensión GNU que BSD grep no llevará.
- -F trata el patrón como texto literal: más rápido e inmune a los metacaracteres de expresiones regulares que se infiltran a partir de variables pegadas directamente de un ticket.
- --exclude-dir=.git y --exclude-dir=node_modules mantienen las búsquedas recursivas fuera de los directorios que existen solo para ralentizarlas; deletree los nombres explícitamente en los scripts, ya que la expansión de llaves es una conveniencia de bash, no una característica de grep.
- Mantenga los hábitos separados: --color=auto para comodidad interactiva, sin color en los scripts (secuencias de escape de registros corruptos) y -n (números de línea) activado para que la siguiente persona pueda encontrar el lugar que pegó.
Nota de campo
Una vez ejecuté grep -r en toda la granja de troncos de un cliente a las 2 a.m. y obtuve cuarenta minutos de silencio por mi problema; agregando --include='*.log' y -l finalicé el ticket en el acto. Los hábitos de incluir y salir del código ahora entran antes que el patrón.
Preguntas frecuentes
¿Por qué grep a veces imprime 'coincidencias de archivos binarios' en lugar de mi línea?
Un byte NUL cerca de la coincidencia hace que GNU grep trate el archivo como binario; agregue -a para forzar el modo texto o -I para omitir los archivos binarios por completo, que es el valor predeterminado correcto en directorios de registros mixtos.
¿Debería usar ripgrep en su lugar?
ripgrep es más rápido y omite archivos binarios y ocultos de forma predeterminada, pero grep existe en cada cuadro al que accedas mediante SSH, incluidas las imágenes de rescate. Aprenda grep primero; busque rg donde está instalado.
¿Cómo busco registros rotados y comprimidos?
zgrep busca archivos .gz de forma transparente y zstdgrep cubre la rotación de compresores más nuevos a la que se cambió; La aguja de ayer suele vivir dentro de uno de esos, por lo que las herramientas cuentan como higiene básica.
¿Cómo puedo hacer coincidir una palabra pero no una palabra más larga que la contenga?
Utilice -w para coincidencias de palabras completas y -x para coincidencias de líneas completas; cuando los patrones necesitan partes de palabras, las clases de caracteres como [Ss]erver brindan un control preciso sin aplanar las mayúsculas y minúsculas en ningún otro lugar.
Cómo ayuda Kinetikatech con comandos de linux y habilidades de shell
Esto lo hemos resuelto cientos de veces: Los comandos y hábitos de secuencias de comandos que deciden si un administrador opera un servidor o lucha contra él: buscar, transformar, transferir y supervisar texto y procesos con las herramientas que se encuentran en cada instalación básica. Con Seguridad de servidores Linux y Gestión de servidores, obtiene el ciclo completo: evaluamos, implementamos, vigilamos las 24 horas y respondemos en 30 minutos cuando importa.