Este artículo presenta algunas herramientas, especialmente grep
, una herramienta de línea de comandos de Linux® que puede usar para buscar directorios o archivos que coincidan con expresiones regulares especificadas.
Que es grep
?
Respuesta oficial:
grep
busca los archivos de entrada con nombre (o la entrada estándar si no especifica un archivo o usa un solo guión (- ) como nombre de archivo) para líneas que contengan una coincidencia con el patrón dado. Por defecto, grep
imprime las líneas coincidentes.
Mejor respuesta:
Busque un archivo, directorio o salida para algo específico, similar a Ctrl + f en Windows®. Utilice esta función para orientar exactamente lo que necesita.
Básicos
A menudo, la forma más fácil de mostrar cómo funciona un comando es con ejemplos.
Puede ver todos los usuarios en /etc/passwd archivo con el siguiente comando:
# cat /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
apache❌48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql❌27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
sher❌1002:1002::/home/sher:/bin/bash
Usando grep
, puede reducir esa lista para encontrar un solo usuario.
Buscar un usuario específico :
Enumere los usuarios pero filtre la salida mostrando solo la línea con sher en él.
# cat /etc/passwd | grep 'sher'
sher❌1002:1002::/home/sher:/bin/bash
O encuentre el mismo usuario con un solo comando:
# grep 'sher' /etc/passw
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
En el siguiente ejemplo, busque todos los usuarios con acceso bash:
# grep 'bash' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
Banderas
Como la mayoría de los comandos de Linux, grep
usa banderas, generalmente una o más letras precedidas por uno o más guiones, para agregar funcionalidad adicional.
-v
:Muestra todo lo que no incluye el patrón de búsqueda especificado:
# grep -v 'nologin' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
-i
:Muestra las coincidencias, ignorando las mayúsculas y minúsculas, lo cual es útil cuando no sabes exactamente lo que necesitas:
# grep -i 'SHER' /etc/passwd
sher❌1002:1002::/home/sher:/bin/bash
Buscar múltiples patrones
grep
usa el símbolo de tubería (| ) para significar o permitiéndole buscar más de una cosa a la vez. Utilice uno de los siguientes métodos para buscar varias cosas a la vez:
\ :Escapa del siguiente carácter, una tubería (| ) permitiéndole funcionar como o :
# grep 'sher\|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
-E :Interpreta caracteres especiales, como | como o :
# grep -E 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
El egrep
comando hace lo mismo:
# egrep 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
Combinando banderas
Puede usar varias banderas en combinación para refinar una búsqueda.
El siguiente ejemplo muestra todos los usuarios que no son sher o bastidor ,independientemente del caso del patrón de contenido del archivo:
# egrep -vi 'SHER|RACK' /etc/passwd
Ejemplos practicos
Las siguientes secciones cubren otros usos para grep
e introducir otros comandos útiles.
Ignorar comentarios
En Linux, las líneas se comentan agregando el símbolo de libra (# ) al principio de la línea. De esta manera, puede agregar sus propias notas y scripts o programas, ignorar los comentarios y no ejecutar esas líneas.
Para mostrar archivos ignorando esos comentarios, use el siguiente comando:
# grep -v ^'#' /file
Incluso puedes ejecutar un grep
encima de otro grep
comando.
Por ejemplo, enumere un archivo ignorando las líneas comentadas y luego busque algo específico:
# grep -v ^'#' /file | grep 'hello'
Historial de búsqueda
La mayoría de los sistemas Linux mantienen un registro de los comandos ejecutados, al que puede acceder con el comando history
. Cuando combinas history
con grep
, puede investigar de manera muy efectiva lo que se ha ejecutado en su sistema hasta el momento.
Compruebe la passwd
ejecutar comandos y otros comandos que contienen la contraseña patrón:
# history | grep 'passwd'
Buscar comandos ejecutados en un día específico:
# history | grep '2021-05-10'
Compruebe qué comandos se ejecutaron en un momento específico:
# history | grep '2021-05-10 11:00:'
Comprobar puertos e inicio de sesión raíz
Muestra el tráfico web que se ejecuta en los puertos 80
y 443
:
# netstat -plnt | egrep '80|443'
Puedes usar ^ en un grep
Comando para mostrar solo aquellas líneas que comienzan con su patrón de búsqueda.
Por ejemplo, ejecute el siguiente comando para verificar si el sistema permite inicios de sesión raíz:
# grep ^'Permit' /etc/ssh/sshd_config
Buscar registros con cabeza y cola
Usar top
para mostrar las primeras diez líneas del registro de intentos de inicio de sesión:
# head /var/log/secure
Usar tail
para mostrar las líneas al final del registro de intentos de inicio de sesión:
# tail /var/log/secure
Usa el last
comando para mostrar las primeras diez líneas de los inicios de sesión más recientes:
# last | head -10
Usa el tail -f
para ver crecer un archivo en tiempo real. Por ejemplo, puede ver los intentos de inicio de sesión más recientes y ver los intentos en curso. Si alguien intenta iniciar sesión, puede verlo como sucede con el siguiente comando:
# tail -f /var/log/secure
Ctrl + C to exit
Otras herramientas
Puede experimentar con sus nuevas habilidades utilizando las herramientas de esta sección.
vim o nano
vi
, vim
y nano
son los editores de texto más comunes en Linux. Puede usarlos para editar un archivo, de forma similar a usar el Bloc de notas en Windows.
Abre y crea un nuevo archivo, prueba :
# vim /test
Acciones | Secuencia de teclas | Explicación |
---|---|---|
Para comenzar a escribir contenido nuevo: | i | Preparar para insertar texto |
Para salir sin guardar: | Esc :q! | Escapar del modo de inserción y salir |
Para salir y guardar: | Esc :wq! | Escapar del modo de inserción, escribir y salir |
eco
echo
es un comando simple que le dice a Linux que repita lo que acaba de escribir. Esto es efectivo para probar grep
comandos sin crear primero un archivo nuevo.
Por ejemplo, haz hola mostrar:
# echo 'hello'
hello
Mostrar hola y busca las letras del medio:
# echo 'hello' | grep 'ell'
hello
Incluso puedes usar echo
para mostrar varias líneas usando -e
y \n
para agregar nuevas líneas.
Mostrar hola y ho en líneas separadas:
# echo -e 'hi\nho'
hi
ho
Mostrar hola y ho en líneas separadas y busque hola :
# echo -e 'hi\nho' | grep 'hi'
hi
sed
Como grep
, sed
tiene muchos usos, pero principalmente usa este comando para buscar y reemplazar contenido específico. Estos son algunos ejemplos básicos de cómo destacar líneas específicas:
Primero, usa vim
para crear un archivo:
# vim /test
Cuando se abra el editor, ingrese las siguientes líneas:
1 Hi
2 How
3 Are
4 You
Mostrar el nuevo archivo:
# cat test
1 Hi
2 How
3 Are
4 You
Usa sed
para devolver todo excepto la primera línea:
# sed 1d test
2 How
3 Are
4 You
Devuelve solo la primera línea:
# sed 1q test
o
# sed '1!d' test
1 Hi
Devuelve solo la segunda a la cuarta línea:
# sed '2,4!d' test
2 How
3 Are
4 You
Conclusión
Hay muchas otras herramientas que puede usar, como awk
, cut
, sort
, xargs
,y así. Ahora que sabe cómo crear un archivo usando echo
, puede experimentar más eficazmente con ellos.