No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Redirecciones: pipe operator

8/21
Recursos

Aportes 307

Preguntas 74

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

¡Los pipe operators de Linux son de lo mejor! En serio puedes hacer cosas muy increíbles con ellos. Por ejemplo, yo llegué a hacer un comando super poderoso que me consultaba todos los archivos que tenía guardados en Amazon S3 y me los ponía en varias líneas ordenaditos (porque Amazon te los devuelve con demasiada información desordenada), es más aquí se los enseño (no te asustes por esto, es algo un poquito avanzado, pero quiero que veas cómo usando pipe operators puedes hacer cosas increíbles):

aws s3 ls s3://$BUCKET --recursive | awk '{print $4}' | awk -F/ '{print $NF}'

Aquí uso el comando awk (uno de los comandos que ya te expliqué en otra clase 👀). Claro, no necesitas llegar a hacer cosas complejas para usar pipe operators, puedes hacer cosas sencillas, por ejemplo, buscar tus paquetes instalados en tu computadora y filtrar por alguno específico:
.

.
En este caso, el comando dpkg --get-selections te dice qué paquetes tienes instalados en Ubuntu, y el comando grep hace el filtro (little spoiler, lo verás más a profundida más adelante) 👀.
.
¡Pero imagina todo lo que puedes hacer con el pipe operator! Lo mejor es que si logras dominarlo, aprenderás a automatizar procesos en la terminal 💚.

Tenia que hacerlo 😂

💚

If you know, you know👀

🐱‍💻 El pipe operator permite enviar la salida de un comando como entrada del siguiente.

Pipe operator |

💡Los filtros son el procesos de tomar una entrada de flujo y, realizando una conversión, es mandado a la salida de otro stream.
.
Definición

Un pipeline sirve en la construcción de comandos para generar filtros.

.
Pipeline stdout a stdin

Usamos el operado pipe | entre dos comando para direccionar el stdout del primero con el stdin del segundo. Cualquier comando, entre pipes, puede tener opciones o argumentos para construir filtros complejos.

Una de las ventajas de los pipes, en Linux y UNIX, es de que pueden variar y generar salidas intermedias de diferentes procesos, generando todo un trace de flujo de información.

Redirecciones: pipe operator.

  • Es uno de los operadores mas útiles que existen, ya que nos permite poner varios comandos, tales que la salida de uno es la entrada del siguiente 📤.
  • echo <texto> genera un stdout con el texto que tenemos.
  • cat <archivo1> <archivo2> muestra los dos archivos concatenados 💩.
  • El pipe operator | hace que el stdout de un comando sea el stdin de otro comando. Por ejemplo ls -lh | less
  • tee hace algo parecido a >, pero dentro de los pipe´s, por ejemplo ls -lh | tee output.txt |less . Se puede poner en medio, pero se ignora porque se sigue pasando.
  • cowsay "Texto" es un comando que imprime una vaca que dice algo JAJAJAJAJ 🐮.
_________________________
< Nunca pares de aprender >
 -------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
  • echo "Texto" | lolcat esto lo imprime con colores bonitos 😂.

Hola

Como estuvieron comentando algunos compañeros, si queremos ver la lista de los dibujos que podemos generar dentro de la terminal tenemos que hacer lo siguiente:

También, aprovecho para compartirles algunos dibujos:

Espero que se diviertan así como yo también lo hice!

Saludos

Prueben esto para darle animación:

cowsay -f dragon-and-cow “Like si te quedaste jugando con lolcat un rato!” | lolcat -F 12 -d 5 -a

Si te interesa el procesamiento paralelo para mejorar tus algoritmos y pasar parámetros de manera automatizada, el uso del pipe “|” y del ampersan “&” se volverán más poderosos que Superman XD!!!
.
Ejemplo: competir que algoritmo es más rápido o eficaz:

>  python3 algoritmo_1.py $(cat datos.txt) & python3 algoritmo_2.py $(cat datos.txt) & 

.
Como ya vimos, el “&” al final de un comando crea un hilo por cada comando separado por un “&” y veríamos que programa termina primero, MUY INTEREZANTE.

Toma tu ahegao:

Vamos viendo que tal ✌️😁

🤗

Sin duda el pipe operator (|) es una gran herramienta y puedes hacer grandes cosas.
En mi trabajo se llegan a monitorear servicios de transacciones que se ejecutan en un Banco. Pero estos LOGs, luego llegan a pesar mucho, ya que se registra la información de todos los días, así que al descargarlos tarda mucho. Y si solo quiero extraer la información de cierto día, ejecuto un comando para obtener el número de línea donde se encuentra la información que quiero, y de ahí solo extrer la información necesaria y pasarla a un archivo. Este archivo que se crea pesa menos que el archivo original.

si le haces sort a la vaca, la pone al revés, talvez no es muy útil pero me pareció gracioso

8. Redirecciones: pipe operator

Les comparto los comandos aprendidos en clase:

Como dato interesante a tener en cuenta, en la terminal tenemos head, tail y se refiere a las partes del gato, siendo la cabeza y la cola, pero si queremos ver “todo el gato” es decir, todo el contenido usamos cat. Cosas curiosas de Linux 😃.

  1. ls -lh | less : Mediante el pipe operator cambié el output del archivo hacia el comando less .
  2. ls -lh | tee output.txt | less : Lo que hace este comando es redireccionar el output del ls hacia un archivo output y luego mostrarlo con less.

Finalmente si queremos usar lolcat y cowsay, y no los tienes debes instalarlos con:

sudo apt install lolcat
sudo apt install coway

¡Esta clase me pareció divertida! Me ayuda a perderle un poco el miedo a la Terminal.
![Mi vaquita de colores](

Aplicando lo aprendido:

un verso:

El comando 'apt-get ’ está diseñado para instalar paquetes en sistemas Linux. Homebrew es el equivalente para la Mac. Es el administrador de paquetes que la mayoría de las personas se sienten cómodos con su uso. Homebrew instala paquetes en su propio directorio y luego, simbólicamente, vincula sus archivos a / user / local . Puede instalar homebrew y ejecutar el comando para instalar paquetes siguiendo los pasos a continuación:

  • Mantenga presionada la tecla Comando y presione la barra espaciadora para abrir Spotlight, luego escriba Terminal y Entrar.

  • Primero, necesita instalar la herramienta de línea de comandos Xcode usando el siguiente comando

xcode-select--install
  • Después de la instalación de la herramienta Xcode, ahora escriba / copie el siguiente comando para instalar Homebrew en macOS:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

El comando se obtuvo de la pagina oficial de Homebrew (https://brew.sh/index_es)

  • Ahora, utilizando Homebrew , escriba el siguiente comando para instalar cualquier paquete que desee instalar
    brew install nombreDelPaquete

  • Una vez instalado el Homebrew ejecutar los comandos

brew install cowsay
brew install lolcat

no es el mejor aporte pero me gusto

repeat 5 {cowsay "texto" | lolcat}

Con cowsay -l pueden ver todos los dibujos disponibles

El comando :

cowsay 

Sin duda ha valido completamente el curso

Me siento perdida en la clase, la comunidad y el investigar me ha ayudado a entender. Pero recomendaria al profe que usaramos archivos sin tantos documentos adentro para que podamos ver mejor las cosas cuando las concatenamos a veces el se mueve de un archivo a otro y uno no sabe que fue lo que hizo. De todas formas quiero agregar que el curso me ha gustado y he aprendido mucho!

LEWD

Que utiles los Pipe operators en la terminal, pueden tener muchísima utilidad como los antes mencionados por los compañeros. Yo por mi parte les dejo algo un poco menos útil pero que puede ser tremendamente divertido.

Primero que nada conseguí este programa llamado figlet que transforma un texto en un arte ASCII. Para instalarlo debes hacer:

apt-get install figlet

Una vez instalado figlet podemos comenzar a jugar con él, cowsay y lolcat.

Por ejemplo:

$ figlet Platzi | cowsay -f '/usr/share/cowsay/cows/tux.cow' -n | lolcat

figlet toma mi texto Platzi y lo transforma a ASCII, luego lo paso a cowsay con las siguientes flags:

  • f = con el puedes cambiar como se ve la vaca hay diferentes tipos para escoger. Los puedes revisar todos en la dirección ‘/usr/share/cowsay/cows’ acá estarán las diferentes versiones que puedes utilizar.
  • n = También se le paso el flag -n esto debido a que por defecto la vaca hace un wrap del texto que le pasas en 40 caracteres, si no colocamos este flag el arte ASCII no se apreciará.

    Por último el resultado de este programa se pasa por lolcat para que le agreguemos color y tenemos como resultado:



Espero que te diviertas tanto como yo haciendo esto.

Pipe operators

  • Hacer que el output sea el proximo input

  • ls -lh Pictures | sort | tee pictures.txt | less

  • Lista a nivel humano el contenido de Pictures, luego lo ordena, luego lo ingresa en pictures.txt, luego lo ve en la terminal

  • cowsay “Hello, I’m a cow” | lolcat

  • Hace que una vaca hable y luego transforma el texto en un arcoiris

  • echo: genera un standard output del string que escribamos

  • cat: concatena por ejemplo dos archivos de texto

  • Generalmente los comandos que nos muestran texto - redireccionan un standard input

  • cat archivo.txt = cat < archivo.txt

  • tee: cumple la función de redirección hacia un archivo

  • sort: comando que ordena

  • cowsay: muestra un texto con una vaquita

  • echo “Hola Platzi” | lolcat

Lo logré
https://rootear.com/ubuntu-linux/lolcat

cowsay -f elephant "Mi primera vez" | lolcat

Esta clase si me gusto y pude hacerlo todo. Pero recomiendo mucho que las personas que tengan Mac hagan primero las primeras clases de Curso de Prework: Configuración de Entorno de Desarrollo en macOS

ese curso me hizo sentir más confiada de trabajar con mi mac y me ayudo mucho a entender la terminal de Mac.

¡Belive!

Que buen curso estoy tomando xd

con esto, quiero agradecer a la comunidad de Platzi que me ayudaron en la frustracion que causa este curso

Compañeros les dejo unos comandos cheveres para el lolcat, figlet y cowsay:
lolcat = colorear texto
lolcat -a -d 100 = colorear en tiempo real (100 es el tiempo)
-s = velocidad de animación “max: 20”
-p = difusión de colores
-a = Animar el texto
-d = duración "por defecto 12 "
-f = frecuencia “max:3”

figlet = permite reconocer signos del teclado
figlet mensaje = dibuja tu mensaje en grande

cowsay = Dibujar en la terminal
cowsay -l = mostrar lista de dibujos
cowsay -f dibujo =mensaje personalizado

Si algún usuario de MacOS tuvo el mismo problema que yo, les dejo la combinación de teclas para invocar el “pipe operator” (or) en el teclado Mac, ya que me fue difícil encontrar la información en internet. En mi caso, usando Mojave la combinación fue:

“Alt (option) + 1”

y listo!

|||||||||||||||||||||||||||||||||||||||||

me estoy sintiendo un poco frustrada con estas clases, es como que entiendo y a la vez no 😦

Para el que necesite el símbolo | y no sepa cómo sacarlo, usar Alt + 124

Hola a todos, para los que se sienten muy perdidos con este tema, aca les dejo un link en donde me aclararon el concepto de pipes.
https://codigofacilito.com/articulos/pipes

por si a alguien le sirve
en ubuntu no ce pone con décima sino con hexadecimal,
entonces hay que convertir 124 a hexa que es 7c
para colocar el | es

ctrl + Shift + u + 7c

dando

|
  • echo: genera un estandar output
  • cat: concatenar la salida de archivos
    Pipe operator nos va a permitir que el estandar output se convierta en el estandar input de otro comando con este simbolo |
  • tee hace lo mismo que la redireccion mayor que
  • sort para ordenar
  • cowsay nos muestra una vaquita
  • lolcat cambia cualquier texto de color

Un poco de diversión en la clase 😂😂

Para crear figuras aleatorias: 😃
Solo descargan lo necesario y listo.

cowsay -f "$(ls /usr/share/cowsay/cows/ | sort -R | head -1)" "$(fortune -s)"

A estudiar amigos n.n

![](

`


< You’re a great programmer >

     \     ,-.      .-,
      \    |-.\ __ /.-|
       \   \  `    `  /
            /_     _ \
          <  _`q  p _  >
          <.._=/  \=_. >
             {`\()/`}`\
             {      }  \
             |{    }    \
             \ '--'   .- \
             |-      /    \
             | | | | |     ;
             | | |.;.,..__ |
           .-"";`         `|
          /    |           /
          `-../____,..---'`

`

Tenia que hacerlo también, Pero con aportes de algunos compañeros puede hacer una variante para mostrar este elefante :p



el comando es cowsay -f tux | lolcat

Utiliza el siguiente comando para “leer tu fortuna”

fortune | cowsay

Cuando intentas entender la terminal

La terminal :

Hola chicos(as), Aqui les dejo un video de refuerzo para que puedan entender mejor que son y para que sirven los PIPES OPERATOR.
Con este video pude entenderlo mucho mejor. Espero les sirva.
https://www.youtube.com/watch?v=YmcS_ns_z3Y

cat : "Puede" combinar varios archivos y "muestra" el resultado de ellos. > $ cat file1 file2
tee: Realiza la misma acción que "less" pero genera un archivo. > $ ls | tee peanuts.txt [Muestra el resultado y tambien lo guarda en "peanuts.txt"] 
Pipe "|": Redirige la salida (output) como la entrada (input) de otra instrucción.  >$  ls -lh | less     [el output de “ls -lh” es el input de less]

Fuente: linuxjourney.com

Un caso muy frecuente de standard input es restaurar una base de datos con mysql por ejemplo
seria algo asi:

mysql -u root -p database < sql_file.sql 

Esto lo que hace es usar el sql_file.sql como entrada para el comando de mysql

si a alguien le intereza como poner | lo pueden lograr con alt+124

Ya que la sensación de esta clase fue cowsay y el
lolcat en vez del pipe operator, también me subo a ese tren.

PIPE OPERATOR
Es una forma de conectar la salida estándar de un programa con la entrada estándar de otro.
En otras palabras, pasa el resultado de una expresión como el primer parámetro de otra expresión
.
Permite que varios programas puedan encadenarse y hacer que los resultados de un comando puedan usarse como datos para procesar un siguiente comando.
.
.
Como podemos ver utilizamos el Pipe operator para ordenar alfabéticamente nuestros archivos y directorios.

Para abrir el archivo guardado nuevamente de colores con

lolcat

lo puedes hacer de esta forma:

less vaca.txt |  lolcat  

Se que es simple, pero quizás alguien quedo con la duda😁👍

Lo interesante de la redirección del stdin, es que este se presenta a la hora de manejar texto, debido a que para que algo salga por computadora (por nuestra pantalla), no necesita ser escribido, solo toma algo que ya está escrito, y lo muestra.

Si queremos ver varios archvios concatenados, es tan sencillo como poner dos argumentos con el comando cat: car docu1 docu2.

echo, es un comando que genera un stdout de lo que queramos entre comillas: echo "Es interesante"

Cuando queremos generar un comando que desencadene, varios procesos, haciendo que el resultado de uno, sea la entrada del otro.

cat sirve para concatenar archivos.
Entendi que pipe | sirve para filtrar archivos y que pasen automaticamente por otros comandos sin que tengas que ponerlo uno por uno.

Para instalar cowsay y lolcat en Debian o derivados como Ubuntu, Mint, etc… usamos el comando:

sudo apt install cowsay lolcat

Y listo! a reír un poquito… 😉😉😉

Con el ejemplo de la vaca y de lolcat fue mucho mas entendible esto de los pipe operator. 😄

¿Por qué tee y no touch?
Quizas para algunos es claro pero para [email protected] puede que no,
es fácil y lo entiendo de la siguiente manera.

  • Con tee creas un archivo y guardas lo que recibe in Input.
  • Con touch creas el archivo solo creas el archivo y no puedes guardar el input que recibe al tiempo.
[mario@myArchLinux ~]$ cowsay -f tux "Hola Mundo" | lolcat
 ____________ 
< Hola Mundo >
 ------------ 
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/


Información resumida de esta clase
#EstudiantesDePlatzi

  • El pipe operator me permite ejecutar un comando y que su salida sea la entrada de otro comando, con esto podemos crear filtros o encadenamientos

  • Con el comando cat puedo concatenar y tener salida de dos archivos

  • El estándar input no se utiliza mucho dentro de la terminal

  • El símbolo que determina un pipe operator es |

Hola. En wsl me dice esto:
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package cowsay

Resumen de la Clase

Clase 2 – Redirecciones: Pipe Operator

¿Para qué nos sirve el Pipe Operator?

  • Nos permite ejecutar un comando en el que su standart output pase a ser un standart input de otro comando.

¿Qué funciones nos brinda usar Pipe Operator?
o Hacer filtros, encadenamientos o funcionalidades que pueden terminar en un archivo.


¿Para qué nos sirve el comando echo?

  • Para imprimir un standart output en la terminal de cualquier mensaje que escribamos entre comillas:
    • echo “Hola Platzinautas!”

¿Para qué nos sirve el comando cat?

  • Con el podemos imprimir el contenido de un archivo o concatenar varios archivos.

¿El standart input se usa constantemente en la terminal?

  • No.

¿Qué símbolo debemos usar para el Pipe Operator?

  • |

¿podemos usar más de 2 comandos con el Pipe Operator?

  • Si.

¿Para qué nos sirve el comando tee?

  • Nos permite crear un archivo que pasa el standart output de un comando incluido el Pipe Operator.

¿Para qué nos sirve el comando sort?

  • Para ordenar el contenido de un archivo.

¿Cómo puedo instalar cowsay?

  • Con el comando sudo apt-get install cowsay.

¿En caso de que me salga un error de instalación invalida que debo hacer?

  • Actualizar nuestro sistema operativo con los comandos:
    • sudo apt-get update.
    • sudo apt-apt upgrade.

¿Qué hace el comando cowsay?

  • Nos permite imprimir un diseño de vaca con el mensaje que le hallamos escrito al comando:
    • Cowsay “Hola Dolly”

¿Para qué nos sirve el comando lolcat?

  • Para imprimir por consola un mensaje con la letra de un color diferente cada vez que ejecutemos el comando.

¿Qué pasa si queremos guardar un mensaje creado con el comando cowsay y usando el Pipe Operator con lolcat en un archivo usando el comando tee?

  • Lo único que guardaremos es el mensaje sin la particularidad del color que nos brinda el comando lolcat. Esto pasa porque no se pasa el standart de manera adecuada el standart output.

Siempre repito el video dos veces y la segunda vez lo entiendo mucho mejor 😃

Esta es la lista de todos las formas que tiene cowsay:
![](file:///D:/Google%20Drive/cloud%20azure%20fundamentals/platzi%20courses/Terminal%20y%20Linea%20de%20Comandos/2.%20Starting%20to%20run/cowsay%20list.jpg)

mi ejemplo:

´cowsay -f daemon "Hello Platzi English Academy" | lolcat

Algo interesante de cowsay es que tiene varios formatos para el personaje que muestra el mensaje que no necesariamente debe ser una vaca. Si ejecutamos cowsay -l podemos ver todos los formatos disponibles en nuestro sistema. Ejemplo:

$ cowsay -l
Cow files in /usr/share/cowsay/cows:
apt beavis.zen bong bud-frogs bunny calvin cheese cock cower daemon default
dragon dragon-and-cow duck elephant elephant-in-snake eyes flaming-sheep
ghostbusters gnu head-in hellokitty kiss koala kosh luke-koala mech-and-cow
milk moofasa moose mutilated pony pony-smaller ren sheep skeleton snowman
sodomized-sheep stegosaurus stimpy suse three-eyes turkey turtle tux
unipony unipony-smaller vader vader-koala www

dejo el link de la pagina que lo explica mejor

https://picandocodigo.net/2017/personalizar-el-inicio-de-sesion-de-la-terminal-con-fortune-cowsay-y-lolcat/

😃

Gracias a todos por sus aportes!

Para generar este texto use ascii art | lolcat

Personalmente pienso que el pipe operator combinado con el comando grep hacen una poderosa combinación.

Tenia que hacerlo jajaj

https://youtu.be/ZtqBQ68cfJc?t=6833 Recomiendo este tutorial que explica el pipe operator por si a alguien mas se le hizo dificil entenderlo a la primera

![](

Creo que la explicación de los Pipe operators terminó siendo MUY clara cuando hizo el ejemplo con la vaca. Los ejemplos anteriores habían sido muy técnicos y no acaba de “graficarlos” en mi mente.

         ,;;;;;;;,
        ;;;;;;;;;;;,
       ;;;;;'_____;'
       ;;;(/))))|((\
       _;;((((((|))))
      / |_\\\\\\\\\\\\
 .--~(  \ ~))))))))))))
/     \  `\-(((((((((((\\
|    | `\   ) |\       /|)
 |    |  `. _/  \_____/ |
  |    , `\~            /
   |    \  \           /
  | `.   `\|          /
  |   ~-   `\        /
   \____~._/~ -_,   (\
    |-----|\   \    ';;
   |      | :;;;'     \
  |  /    |            |
  |       |            |

Que es esto jajajaja

Encontre esta cosa super loca mientras jugaba en la terminal y buscaba programas ASCCI para terminal, es un navegador dentro de la terminal puedo ver videos, pero como si fuera texto xd.

Aquí les dejo la página oficial para que lo prueben.
browsh

Solo quiero decir que me siento orgullo de poder hacer ese vaca que tanto he visto en decenas de chats y no sabía cómo se hacía jajaja. La adjunto como soporte. Pd: lo de los pipe se me hacen muy interesante.

Solo explican algo de comandos, pero digo que falta más practica para entender lo explicado de una mejor manera

Pueden tambien instalar unos mensajes predeterminados que son como mensajes de la fortuna, estan muy buenos jeje. Alegrando el día!

sudo apt install fortune-mod

Jejeje es divertido!!!

Desde WSL es frustrante seguir el curso

El pipe operator permite enviar la salida de un comando como entrada del siguiente.

no pude instalar cowsay y lolcat desde WSL ubuntu 20.04.3 😦

me voy derrotado de está clase…


Interesante!!!

pipe
comando | less archivolog.txt
cowsay, lolcat

Usando pipes para correr un archivo en python