Cómo usar pipes en Linux

Utilice canalizaciones de Linux para coreografiar cómo colaboran las utilidades de línea de comandos. Simplifique procesos complejos y aumente su productividad aprovechando una colección de comandos independientes y convirtiéndolos en un equipo único. Te mostramos cómo.

Las tuberías están en todas partes

Las canalizaciones son una de las características de línea de comandos más útiles que tienen los sistemas operativos Linux y Unix. Las tuberías se utilizan de innumerables maneras. Mire cualquier artículo de línea de comandos de Linux, en cualquier sitio web, no solo en el nuestro, y verá que las tuberías aan apariencia la mayoría de las veces. Revisé algunos de los artículos de Linux de How-To Geek, y las tuberías se usan en todos ellos, de una manera u otra.

Las canalizaciones de Linux le permiten realizar acciones que no son compatibles de forma inmediata con el cáscara. Pero debido a que la filosofía de diseño de Linux es tener muchas utilidades pequeñas que realicen su función dedicada muy bien, y sin una funcionalidad innecesaria, el mantra “haz una cosa y hazlo bien”, puedes sondear cadenas de comandos junto con tuberías para que la salida de un comando se convierta en la entrada de otro. Cada comando que canalizas aporta su talento único al equipo, y pronto descubres que has reunido un escuadrón ganador.

Un ejemplo sencillo

Supongamos que tenemos un directorio lleno de muchos tipos diferentes de archivos. Queremos saber cuántos archivos de un determinado tipo hay en ese directorio. Hay otras formas de hacer esto, pero el objetivo de este ejercicio es introducir tuberías, así que lo vamos a hacer con tuberías.

Podemos obtener una lista de los archivos fácilmente usando ls:

ls

Para separar el tipo de archivo de interés, usaremos grep. Queremos encontrar archivos que tengan la palabra “página” en su nombre de archivo o extensión de archivo.

Usaremos el personaje especial de la concha”|” para canalizar la salida de ls en grep.

ls | grep "page"

grep imprime líneas que coincidir con su patrón de búsqueda. Así que esto nos da una lista que contiene sólo archivos “.page”.

Incluso este ejemplo trivial muestra la funcionalidad de las tuberías. El resultado de ls no se envió a la ventana del terminal. Fue enviado a grep como datos para el grep comando con el que trabajar. La salida que vemos proviene de grep, que es el último comando de esta cadena.

Ampliando nuestra cadena

Comencemos a extender nuestra cadena de comandos canalizados. Podemos contar los archivos “.page” añadiendo el wc mandar. Utilizaremos el -l (recuento de líneas) opción con wc. Tenga en cuenta que también hemos agregado el -l (formato largo) opción a ls . Usaremos esto en breve.

ls - | grep "page" | wc -l

grep ya no es el último comando de la cadena, por lo que no vemos su salida. El resultado de grep se alimenta en el wc mandar. La salida que vemos en la ventana del terminal es de wc. wc informa de que hay 69 archivos “.page” en el directorio.

Vamos a extender las cosas de nuevo. Tomaremos el wc desactiva la línea de comandos y reemplázalo por awk. Hay nueve columnas en la salida de ls con el -l opción (formato largo). Usaremos awk Para imprimir columnas cinco, tres y nueve. Estos son el tamaño, el propietario y el nombre del archivo.

ls -l | grep "page" | awk '{print €5 " " €3 " " €9}'

Obtenemos una lista de esas columnas, para cada uno de los archivos coincidentes.

Ahora pasaremos esa salida a través del sort mandar. Usaremos el -n (numérica) opción para dejar sort saber que la primera columna debe ser tratados como números.

ls -l | grep "page" | awk '{print €5 " " €3 " " €9}' | sort -n

La salida ahora se ordena en orden de tamaño de archivo, con nuestra selección personalizada de tres columnas.

Agregar otro comando

Terminaremos añadiendo el tail mandar. Le diremos que enumere el últimas cinco líneas de salida solamente.

ls -l | grep "page" | awk '{print €5 " " €3 " " €9}' | sort -n | tail -5

Esto significa que nuestro comando se traduce en algo así como “muéstrame los cinco archivos “.page” más grandes de este directorio, ordenados por tamaño”. Por supuesto, no hay ningún comando para lograr eso, pero mediante el uso de tuberías, hemos creado las nuestras. Podríamos agregar esto, o cualquier otro comando largo, como un alias o función de shell para guardar toda la escritura.

Aquí está el resultado:

Podríamos invertir el orden de tamaño agregando el -r (inversa) opción a la sort y utilizando head En lugar de tail para elegir las líneas desde la parte superior de la salida.

Esta vez, los cinco archivos “.page” más grandes se enumeran de mayor a menor:

Algunos ejemplos recientes

Aquí hay dos interesantes ejemplos de artículos geek recientes de How-To.

Algunos comandos, como el xargscomando, están diseñados para tener la entrada canalizada a ellos. Aquí hay una manera que podemos tener wc contar el palabras, caracteres y líneas en varios archivos, mediante canalización ls en xargs que, a continuación, alimenta la lista de nombres de archivo a wc como si se hubieran pasado a wc como parámetros de línea de comandos.

ls *.page | xargs wc

El número total de palabras, caracteres y líneas se enumeran en la parte inferior de la ventana del terminal.

Aquí hay una manera de obtener una lista ordenada de las extensiones de archivo únicas en el directorio actual, con un recuento de cada tipo.

ls | rev | cut -d'.' -f1 | rev | sort | uniq -c

Aquí están pasando muchas novedades.

  • ls: Enumera los archivos del directorio
  • Rev: Invierte el texto en los nombres de archivo.
  • cortar: Corta la cadena en la primera aparición del delimitador especificado “.”. El texto después de esto se descarta.
  • Rev: invierte el texto restante, que es la extensión del nombre de archivo.
  • ordenar: Ordena la lista alfabéticamente.
  • uniq: Cuenta el número de cada uno entrada única en la lista.
Te puede ser útil:  Cómo descargar música de Spotify para reproducirla sin conexión

El resultado muestra la lista de extensiones de archivo, ordenadas alfabéticamente con un recuento de cada tipo único.

Canalizaciones

Hay otro tipo de tubería disponible para nosotros, llamadas tuberías con nombre. Las canalizaciones de los ejemplos anteriores son creadas sobre la marcha por el shell cuando procesa la línea de comandos. Las tuberías se crean, se utilizan y, a continuación, se descartan. Son transitorios y no dejan rastro de sí mismos. Existen solo mientras se ejecute el comando que los usa.

Las canalizaciones con nombre aparecen como objetos persistentes en el sistema de archivos, por lo que puede verlas utilizando ls. Son persistentes porque sobrevivirán a un reinicio de la computadora, aunque cualquier dato no leído en ellos en ese momento será descartado.

Las tuberías con nombre se usaron mucho a la vez para permitir que diferentes procesos envíen y reciban datos, pero no he visto que se usen de esa manera durante mucho tiempo. Sin duda, hay personas que todavía los usan con gran efecto, pero no he encontrado ninguno recientemente. Pero por el bien de la integridad, o simplemente para satisfacer su curiosidad, así es como puede usarlos.

Las canalizaciones con nombre se crean con el mkfifo mandar. Este comando creará una canalización con nombre llamado “geek-pipe” en el directorio actual.

mkfifo geek-pipe

Podemos ver los detalles de la tubería con nombre si usamos el ls con el comando -l (formato largo) opción:

ls -l geek-pipe

El primer carácter de la lista es una “p”, lo que significa que es una tubería. Si fuera una “d”, significaría que el objeto del sistema de archivos es un directorio, y un guión “-” significaría que es un archivo normal.

Uso de la canalización con nombre

Usemos nuestra pipa. Las canalizaciones sin nombre que utilizamos en nuestros ejemplos anteriores pasaron los datos inmediatamente del comando de envío al comando de recepción. Los datos enviados a través de una tubería con nombre permanecerán en la tubería hasta que se lean. Los datos se mantienen realmente en la memoria, por lo que el tamaño de la tubería con nombre no variará en ls enumera si hay datos en él o no.

Vamos a usar dos ventanas de terminal para este ejemplo. Usaré la etiqueta:

# Terminal-1

en una ventana de terminal y

# Terminal-2

en el otro, para que puedas diferenciar entre ellos. El hash “#” le dice al shell que lo que sigue es un comentario y que lo ignore.

Tomemos la totalidad de nuestro ejemplo anterior y redirijamos eso a la tubería con nombre. Así que estamos usando canalizaciones sin nombre y con nombre en un comando:

ls | rev | cut -d'.' -f1 | rev | sort | uniq -c > geek-pipe

Nada parecerá suceder. Sin embargo, puede notar que no se le devuelve al símbolo del sistema, por lo que algo está pasando.

En la otra ventana del terminal, emita este comando:

cat < geek-pipe

Estamos redirigiendo el contenido de la tubería con nombre a catPara cat mostrará ese contenido en la segunda ventana del terminal. Aquí está el resultado:

Y verá que ha sido devuelto al símbolo del sistema en la primera ventana del terminal.

Entonces, lo que acaba de suceder.

  • Redirigimos parte de la salida a la tubería con nombre.
  • La primera ventana del terminal no volvió al símbolo del sistema.
  • Los datos permanecieron en la tubería hasta que se leyeron desde la tubería en el segundo terminal.
  • Nos devolvieron al símbolo del sistema en la primera ventana del terminal.

Es posible que esté pensando que podría ejecutar el comando en la primera ventana del terminal como una tarea en segundo plano agregando un & al final del comando. Y tendría razón. En ese caso, nos gustaríaave ha sido devuelto al símbolo del sistema inmediatamente.

El punto de no El uso del procesamiento en segundo plano era resaltar que una canalización con nombre es una proceso de bloqueo. Poner algo en una tubería con nombre solo abre un extremo de la tubería. El otro extremo no se abre hasta que el programa de lectura extrae los datos. El kernel suspende el proceso en la primera ventana del terminal hasta que los datos se leen desde el otro extremo de la tubería.

El poder de las tuberías

Hoy en día, las tuberías con nombre son algo así como un acto de novedad.

Las tuberías simples y antiguas de Linux, por otro lado, son una de las herramientas más útiles que puede tener en su kit de herramientas de ventana de terminal. La línea de comandos de Linux comienza a cobrar vida para usted, y obtiene un potenciamiento completamente nuevo cuando puede orquestar una colección de comandos para producir una actuación cohesiva.

Sugerencia de despedida: Es mejor escribir sus comandos canalizados agregando un comando a la vez y haciendo que esa parte funcione, luego canalizando en el siguiente comando.

¿Qué tan útil te resultó el artículo?

¡Haz click en una estrella para valorar!

Valoración media / 5. Votos totales:

¡No hay votos hasta ahora! Sé el primero en valorar este artículo.

Utilizamos cookies para personalizar el contenido y los anuncios, para ofrecer funciones de redes sociales y para analizar nuestro tráfico. También compartimos información sobre su uso de nuestro sitio con nuestros socios de redes sociales, publicidad y análisis. View more
Cookies settings
Aceptar
Política de privacidad y cookies
Privacy & Cookies policy
Cookie name Active
El presente Política de Privacidad establece los términos en que Alternativa.click usa y protege la información que es proporcionada por sus usuarios al momento de utilizar su sitio web. Esta compañía está comprometida con la seguridad de los datos de sus usuarios. Cuando le pedimos llenar los campos de información personal con la cual usted pueda ser identificado, lo hacemos asegurando que sólo se empleará de acuerdo con los términos de este documento. Sin embargo esta Política de Privacidad puede cambiar con el tiempo o ser actualizada por lo que le recomendamos y enfatizamos revisar continuamente esta página para asegurarse que está de acuerdo con dichos cambios.

Información que es recogida

Nuestro sitio web podrá recoger información personal por ejemplo: Nombre,  información de contacto como  su dirección de correo electrónica e información demográfica. Así mismo cuando sea necesario podrá ser requerida información específica para procesar algún pedido o realizar una entrega o facturación.

Uso de la información recogida

Nuestro sitio web emplea la información con el fin de proporcionar el mejor servicio posible, particularmente para mantener un registro de usuarios, de pedidos en caso que aplique, y mejorar nuestros productos y servicios.  Es posible que sean enviados correos electrónicos periódicamente a través de nuestro sitio con ofertas especiales, nuevos productos y otra información publicitaria que consideremos relevante para usted o que pueda brindarle algún beneficio, estos correos electrónicos serán enviados a la dirección que usted proporcione y podrán ser cancelados en cualquier momento. Alternativa.click está altamente comprometido para cumplir con el compromiso de mantener su información segura. Usamos los sistemas más avanzados y los actualizamos constantemente para asegurarnos que no exista ningún acceso no autorizado.

Cookies

Una cookie se refiere a un fichero que es enviado con la finalidad de solicitar permiso para almacenarse en su ordenador, al aceptar dicho fichero se crea y la cookie sirve entonces para tener información respecto al tráfico web, y también facilita las futuras visitas a una web recurrente. Otra función que tienen las cookies es que con ellas las web pueden reconocerte individualmente y por tanto brindarte el mejor servicio personalizado de su web. Nuestro sitio web emplea las cookies para poder identificar las páginas que son visitadas y su frecuencia. Esta información es empleada únicamente para análisis estadístico y después la información se elimina de forma permanente. Usted puede eliminar las cookies en cualquier momento desde su ordenador. Sin embargo las cookies ayudan a proporcionar un mejor servicio de los sitios web, estás no dan acceso a información de su ordenador ni de usted, a menos de que usted así lo quiera y la proporcione directamente. Usted puede aceptar o negar el uso de cookies, sin embargo la mayoría de navegadores aceptan cookies automáticamente pues sirve para tener un mejor servicio web. También usted puede cambiar la configuración de su ordenador para declinar las cookies. Si se declinan es posible que no pueda utilizar algunos de nuestros servicios.

Enlaces a Terceros

Este sitio web pudiera contener en laces a otros sitios que pudieran ser de su interés. Una vez que usted de clic en estos enlaces y abandone nuestra página, ya no tenemos control sobre al sitio al que es redirigido y por lo tanto no somos responsables de los términos o privacidad ni de la protección de sus datos en esos otros sitios terceros. Dichos sitios están sujetos a sus propias políticas de privacidad por lo cual es recomendable que los consulte para confirmar que usted está de acuerdo con estas. Control de su información personal En cualquier momento usted puede restringir la recopilación o el uso de la información personal que es proporcionada a nuestro sitio web.  Cada vez que se le solicite rellenar un formulario, como el de alta de usuario, puede marcar o desmarcar la opción de recibir información por correo electrónico.  En caso de que haya marcado la opción de recibir nuestro boletín o publicidad usted puede cancelarla en cualquier momento. Esta compañía no venderá, cederá ni distribuirá la información personal que es recopilada sin su consentimiento, salvo que sea requerido por un juez con un orden judicial. Alternativa.click Se reserva el derecho de cambiar los términos de la presente Política de Privacidad en cualquier momento.
Save settings
Cookies settings