Posted by q3it on miércoles, febrero 08, 2023 in Linux
Hoy voy a hablar sobre tuberías "pipes", que se representa con el carácter | y lo que hará es cambiar el comportamiento. Cuando nosotros tenemos un comando su salida estándar en vez de mostrarse en pantalla o grabase en un fichero, se va a meter en una tubería y se convertirá automáticamente en entrada del comando 2 que nosotros especificamos, en vez de ejecutar un comando y grabar su salida en un fichero y luego ejecutar el comando 2, con ese fichero lo que haremos es en una misma línea convertir la salida de un comando en la entrada de otro comando.
Imaginemos que nosotros tenemos un fichero y lo queremos ordenar primero, entonces ejecutamos el comando sort con el nombre del fichero y en vez de redirigir esta salida a un fichero simplemente especificamos el |, y a la derecha vamos a escribir el comando donde vamos a convertir la salida estándar para sort fichero y lo vamos a convertir en una entrada estándar en este caso el comando uniq.
Si recordamos el comando uniq necesitaba una entrada que estuviese ordenada, nosotros ya lo estamos haciendo ya aquí, no necesitamos pasar ningún parámetro ni argumento porque se lo estamos pasando por una tubería y nos mostrará el fichero ordenado y eliminando los repetidos.
Nosotros tenemos un fichero llamado ips.txt que se han conectado a nuestro servidor.
Podemos ver el contenido y vemos que este listado de ips no está ordenado por ejemplo, hay ips que accede dos veces pero no están en la misma línea, entonces nosotros no podemos utilizar el comando uniq porque no están contiguas. Primero tenemos que ordenarlo con el comando sort y ahora aparece todas las ips ordenadas.
Ahora como están ordenadas van a estar las duplicadas y, van a estar contiguas, nosotros podríamos grabarlo en un fichero, por ejemplo, fichero y luego ordenar este, hacer un uniq para ver cuántas veces ha cedido cada ip, pero nosotros podemos evitar crear el fichero simplemente poniendo | y pasándoselo uniq.
Nosotros en vez de guardarlo en otro fichero también lo vamos a poder pasar por otro | y pasárselo a otro comando, es decir, la salida de este comando de sort se lo
vamos a pasar a uniq y la salida al comando uniq se lo vamos a pasar a sort, de nuevo ponemos la opción -n para ordenarlo.
vamos a pasar a uniq y la salida al comando uniq se lo vamos a pasar a sort, de nuevo ponemos la opción -n para ordenarlo.
Ya sabemos quién ha cedido más a nuestro servidor. Simplemente hemos ejecutado un comando, no hemos generado ningún fichero y hemos ejecutado los tres comandos en una misma línea, no tenemos que esperar a que acabe uno para ejecutar los otros.