No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Adquiere por un a帽o todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

0D
15H
51M
39S

Encadenando comandos: operadores de control

10/23
Recursos

Los operadores de control son s铆mbolos reservados por la terminal que nos permiten encadenar comandos.

Si usas constantemente la tecla enter para ejecutar varios comandos, puedes evitarlo si usas el operador ; que separa los comandos que estamos ejecutando.

Comandos en la misma l铆nea (;)

Solo necesitas escribir los comandos que quieres ejecutar separados por ; y luego presionar enter.

mkdir ProyectosSecretos; ls; date

image.png

Lo que sucedi贸 es:

  • Se cre贸 un directorio llamado "Proyectos Secretos"
  • Se listaron los archivos
  • Se imprimi贸 la fecha actual

El comando date imprime por consola la fecha actual.

Comandos as铆ncronos (&)

Cuando queremos ser m谩s eficientes podemos ejecutar varios comandos al mismo tiempo, de modo que no tenemos que esperar a que uno se ejecute para luego ejecutar el que sigue.

Para llevar a cabo varios comandos, al mismo tiempo, usamos el operador & entre cada comando que queremos ejecutar.

date & echo "Hola" & cal

image.png

El comando cal imprime un peque帽o calendario de la fecha actual y el comando echo imprime por el texto que le pases.

En la salida podemos ver que en la primera l铆nea dice [1] 349 y en la tercera dice [2] 350, esto significa que se crearon dos hilos para ejecutar los 3 comandos que se le dieron.

El primero, con el id 349, se us贸 para ejecutar el comando date y el segundo, con el id 350 se us贸 para ejecutar los comandos echo y cal.

Comandos con condicionales

Podemos ejecutar comandos dependiendo de condiciones.

Condici贸n and (&&)

Si escribimos varios comandos separados por el operador && estamos indicando que para que estos se ejecuten, el comando anterior tuvo que ejecutarse correctamente.

cd lp && mkdir Comida image.png

(Recuerda que el comando cd, Change Directory te cambia al directorio que le indiques).

En este ejemplo, intentamos cambiar al directrio "lp" pero ese directorio no existe, as铆 que el comando falla y no se ejecuta el siguiente.

En caso de que el primer comando se haya ejecutado correctamente pasar谩 al siguiente, y despu茅s ver谩 si ese se puede ejecutar.

cd ProyectosSecretos/ && touch ProyectoExplosivo.txt && ls

image.png

Como en este caso todos los comandos se ejecutaron correctamente sucede esto:

  • Cambia el directorio "ProyectosSecretos"
  • Crea el archivo "ProyectoExplosivo.txt"
  • Lista el contenido del directorio con ls

Condicional or (||)

Al condicional or no le importa si el comando anterior se ejecut贸 o no, simplemente va probando todos los comandos a ver cu谩l se ejecuta.

Por un momento vamos a suponer que no sabemos muy bien cu谩l es el comando para cambiar de directorio si es cd o cambia-carpeta, entonces para evitar un error escribimos:

cd ProyectosSecretos/ || cambia-carpeta ProyectosSecretos/

image.png

Aqu铆 vemos que alguno de los dos comandos est谩 mal, pero igual cambi贸 la carpeta porque uno de esos funcion贸.

Combinando operadores de control

Siguiendo con el ejemplo anterior, vamos a cambiar de directorio. Si se logra cambiar de directorio creamos una carpeta adentro. cd ProyectosSecretos/ || cambia-carpeta ProyectosSecretos/ && mkdir ProyectoIncreible image.png

Esto funcion贸 porque el operador or devolvi贸 verdadero al tener un comando que funcionara, por lo tanto, el operador and lo interpret贸 como un comando que funcion贸 correctamente.

Si esto 煤ltimo se te es un poco complicado te invito a que tomes el Curso de Pensamiento L贸gico.

Tabla de operadores

| Operador | Funci贸n | | --- | --- | | ; | Ejecuta de forma s铆ncrona los comandos espec铆ficados | | & | Ejecuta de forma as铆ncrona los comandos espec铆ficados | | && | Ejecuta el comando si el anterior se ejecut贸 correctamente | | \|\| | Ejecuta el comando si el anterior o la combinaci贸n de los anteriores resultaron en verdadero |

| Comando | Funci贸n | | --- | --- | | echo | Imprime el mensaje que le indiques | | cal | De calendar imprime un calendario con la fecha actual | | date | Imprime la fecha actual |

Contribuci贸n creada con los aportes de: Miguel Gonzalez.

Aportes 733

Preguntas 56

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Nota importante:

  • Comandos separados por punto y coma 鈥;鈥 : Se ejecutan uno seguido del otro en el orden en que fueron puesto. Uno no se ejecuta hasta que el otro proceso aya terminado.
  • Comandos separados por & : Se ejecutan todos al mismo tiempo, es decir de forma as铆ncrona.
  • Comandos separados por && : Se ejecutan solo si el comando anterior se aya ejecutado exitosamente. Suponemos que A, B y C son comando:
    A && B && C
    El B solo se va ejecutar si el A se ejecuta exitosamente, y el C solo se va ejecutar si el B si ejecuta exitosamente. Si el B no se ejecuta exitosamenta el C no se ejecuta. Si el A no se ejecuta exitomante el B y el C no se ejecutan.
  • Comandos separados por || : Solo se ejecuta uno. Sea cuantos comandos tienes separados por || solo ejecuta o toma en cuenta el primer que se ejecuta exitosamente (bajo la redundacia), y descarta automaticamente los demas. Cuando uno de los comandos se ejecuta exitosamente, descarta los demas comandos.

Acoplamiento de comandos con operadores bash

Es posible agregar cierto nivel de l贸gica, en cuanto a la ejecuci贸n de comandos. Para crear este sentido de programaci贸n, utilizamos los operadores de programaci贸n.

  • Secuencia de comandos linealmente ;
command1 ; command2 ; command3 ; command4 ;
  • Secuencia simult谩nea &
command1 & command2 & command3 & command4
  • Secuencia condicional &&
command1 && command2 && command3 && command4
  • Secuencia condicional ||
command1 || command2 || command3 || command4

Ejemplo de acoplamiento con git:

alias gt-deploy="git add . && git commit -m 'hot fix' && git push origin master"

Reto realizado aplicando los comadnos de cowsay, lolcat y pipe operators aprendidos en la clase pasada.

馃搶 Los operadores de control permiten ejecutar m谩s de un comando, encadenando los mismos.

Notas 馃槃
Encadenando comandos: operadores de control.

  • Son s铆mbolos reservados por la terminal que nos permiten ejecutar varios comandos seguidos, e incluso agregar condicionales 鉀擄笍.
  • S铆ncronos: Se corre uno detr谩s de otro, en orden. Se hace esto con ; , por ejemplo ls; mkdir carpeta1; cal 馃憗锔
  • As铆ncrono: Por cada comando, se abre una nueva terminal, y cada comando se corre de manera paralela, esto es con &, por ejemplo ls & date & cal 鈴诧笍
  • Condicionales: Podemos agregar l贸gica a como se corren los comandos:
    • AND: Si se cumple un comando, entonces se ejecuta el siguiente, se usa &&, un ejemplo es mkdir carpeta1 && cd carpeta1 && echo "Si se pudo" . Si no se puede ejecutar el primer comando, no se ejecuta el siguiente. 馃殕
    • OR: Se ejecuta el primer comando que se pueda ejecutar, y se usa ||, por ejemplo cd carpeta || echo "No hay carpeta" 馃ぉ

cd asdfasd || touch archivo.txt && echo 鈥淎rchivo creado鈥

OPERADORES DE CONTROL
S铆mbolos reservados por la terminal que permiten ejecutar m谩s de un comando o ejecutarlos. Es posible ejecutarlos de forma s铆ncrona, as铆ncrona o con condicionales.

  • Forma s铆ncrona: Se ejecutan uno detras de otro. Se colocan los comandos separados por un punto y coma ;.

  • Forma as铆ncrona: Ejecuta comandos de forma paralela.
    Se colocan los comandos separados por un ampersand &.

  • Forma condicional:

    • AND (&&) Solo se ejecuta si el comando anterior se ejecut贸.

    • OR (||) Solo ejecut谩 el primer comando que sea ejecutable, los demas son ignorados.

Tabla de verdad para las operaciones: AND (Multiplicaci贸n) y OR (Suma), Salida: [0 = Verdadero , 1 = Falso]:
![](

驴Por que al no se ejecuta el comando echo despu茅s de usar || ?

Esto se debe a que al usar el || se ejecuta el siguiente comando solo si el comando que se esta ejecutando da falso o error.

cd DirectorioNoExiste || echo 'Se ejecuta el comando echo'

// -bash: cd: DirectorioNoExiste: No such file or directory
// Se ejecuta el comando echo

ls -lh || echo ''Se ejecuta el comando echo'

//-rw-r--r-- 1 lggm lggm   53 May 11 19:34  error.txt
//-rw-r--r-- 1 lggm lggm   15 May 11 19:46  input.txt
//-rw-r--r-- 1 lggm lggm   44 May 11 19:33  output.txt
//-rw-r--r-- 1 lggm lggm    0 May 11 16:38  text.txt]

Como se puede observar (lo pueden intentar en su terminal) en el segundo ejemplo el primer comando se ejecuta correctamente pero el segundo no se ejecuta.

Pueden ver la informaci贸n en el siguiente link.
https://baulderasec.wordpress.com/

Reto:

cd ghsghsgfhsfgh || touch archivo.txt && echo 鈥淎rchivo creado鈥

Para ejecutar comandos de manera s铆ncrona, puedes usar dos m茅todos:

comando-1; comando-2; comando-3

Salida:
Comando-1
comando-2
comando-3
Opci贸n 2

comando-1 && comando-2 && comando-3

Salida:
comando-1
comando-2
comando-3

La diferencia es que si unas la sintaxis 鈥;鈥 y un comando tiene una salida de STANDAR ERROR, los siguientes comandos siguen ejecutandose, en cambio con 鈥&&鈥 si falla un comando, los siguientes ya no se ejecutaran!

investigue el significado de asincrono y sincrono y el profesor usa el significado al reves, cuidado ahi,me confundi la primera vez

驴Por qu茅 no se ejecut贸 echo "Archivo creado"?
El operador || lo que hace es ejecutar el comando a su derecha solo si el comando anterior no se ejecuta exitosamente.
En el ejemplo, el profesor ejecut贸
cd ajknmsdklnmasdn || touch archivo.txt || echo "Archivo creado"
驴Qu茅 sucede?

  1. El primer comando se ejecuta y luego devuelve un error.
  2. El segundo tambi茅n se ejecuta ya que el anterior devolvi贸 un error, pero se ejecuta exitosamente, sin errores.
  3. El tercero no se ejecuta porque el anterior se ejecut贸 exitosamente y la condici贸n para que se ejecute un comando que le sigue al operador || es que el anterior se ejecute sin 茅xito.

Reto:

cd Desktop && touch newfile && echo 'created'

Para que nos regrese el echo 鈥淎rchivo creado鈥 debemos dejarlo con doble && ya que el comando or solo nos regresa un comando exitoso.

Es decir, si ponemos touch archivo.txt || echo 鈥淎rchivo creado鈥 solo va a tomar el primer comando que sea exitoso. Por lo tanto propongo dos opciones:
1.) Uno de los primeros comandos debe ser exitoso para que se corra el echo 鈥淎rchivo creado鈥.

cd falseDirectory || touch archivo.txt && echo 鈥淎rchivo creado鈥

2.) Si queremos asegurarnos que el segundo comando (touch archivo.txt) sea creado para que se ejecute el 煤ltimo (lo cual es lo que tiene m谩s sentido), podemos ejecutar:

cd falseDirectory; touch archivo.txt && echo 鈥淎rchivo creado鈥

Reto Completado:

Aqui les doy un ejemplo para que lo vean y lo practiquen:

鉃  ~ git:(master) 鉁 mkdir reto && cd reto && echo "Palabra que uses"         
Palabra que uses
鉃  reto git:(master) 鉁 

#NuncaParesDeAprender

Reto

Operadores de control:

鈥;鈥 鈥 S铆ncrono
"&"-- As铆ncrono (Ejecuci贸n en diferentes hilos)
"&&" 鈥 Operador And
"||" 鈥 Operador Or

En el reto se podr铆a a帽adir un && antes del echo para que ejecute el echo sin problemas馃憞馃憞

cd ajskjs || touch archivo.txt && echo "Archivo creado"
  • En cd (Change directory) ejecuta (No such file or directory)
    ya que no existe el directorio.

  • Doble pipe (or) || ejecutar谩 la creaci贸n
    de archivo.txt ya que no depende de que el anterior sea verdadero.

  • Doble ampersand (y) && se ejecuta ya que la linea anterior es verdadera, nos muestra 鈥淎rchivo creado鈥.

Operadores de control

  • Son simbolors reservados por la terminal que nos permiten encadenar comandos.
  • Cadena Sincrona (馃槈 鈫 ejecutan los comandos de manera lineal, uno despu茅s del otro, si algun comando falla la cadena no se interrumpe
  • Cadena Asincrona (&) 鈫 ejecutan los comandos de manera simult谩nea, abriendo un nuevo proceso por cada comando
  • Condicional and (&&) 鈫 Interrumpe la cadena si hay alg煤n error
  • Condicional or (||) 鈫 Interrumpe la cadena si hay una ejecucion exitosa

 cd directorio || touch archivo.txt && echo "Archivo creado"   

Hola Profe Enrique, cuando ejecuto los comandos;
ls & date & cal
Debo de dar enter para que regrese el prompt.

Reto

cd carpeta || touch archivo && echo "archivo creado"
El operador OR (芦||禄) no ejecuta todos lo comandos de la sentencia, solo hasta que uno se ejecute correctamente, como en los lenguajes de programaci贸n. Es por eso que en el ejemplo como se ejecut贸 el 芦echo禄 luego de crear el archivo.

6:03 podr铆a ir esto tambi茅n:

cd jadfj帽 || touch archivo2.txt && echo "Archivo creado"

Codigo del ejercicio

<mkdir ejercicio && cd ejercicio && touch hola.txt  && echo "El archivo se creo correctamente > 

CHALLENGE:
Se logro, no me llevo al directory errado, tampoco me creo el archivo pero si me mostro el mensaje:

lo hice con mis mp4 ya que son menos xD

find ./ -name "*.mp4" > mis_documentos_de_mp4.txt && cowsay "el proceso de guardado a terminado" | lolcat
cat mis_documentos_de_mp4.txt | lolcat && cowsay "el proceso de lectura a finalizado" | lolcat

Reto:
cd Directorio inexistente || touch test.txt && echo 鈥淎rchivo creado exitosamente鈥

Explicaci贸n: Esta es una manera de cumplir el reto ya que al no cumplirse el primer comando, es decir el cd, hace que pase al segundo comando y ejecute el comando touch y luego el comando echo. Lo que cambia con lo que se hizo en la clase es que en vez de separar el touch y el echo con un ||, estos se separan con && para que al momento en que se ejecute el touch , tambi茅n se ejecute el echo. Esto se debe a que si se separaran con ||, solo se ejecuta el touch porque es el primer comando que funciona.

Operadores de control

Condicionales que nos permite ejecutar comandos en funcion de una condicion

; //Al separar comandos con punto y coma, se ejecutan de forma sincronica en el orden en que se colocaron, por ejemplo.
ls ; echo "Termino el ls"; cal

& //Al separar comandos con &, se ejecutan de forma asincronica, abriendo un subproceso por cada comando. Esto nos retornara el proccess id en que fueron ejecutados.
ls & echo "Imprimiendo en otra shell" & cal

&& //Al separar comandos con &&, se ejecutaran de forma sincronica, siempre y cuando el comando anterior se haya ejecutado exitosamente.
ls && echo "Termino el ls" && cal

|| //Al separar comandos con &&, se ejecutara el primer comando que logre terminar de manera exitosa.
cd sadasdasd || touch archivo.txt || echo "Hola!" //creara el archivo touch

Probablemente me vol茅 un poco intentando resolver el reto, inmediatamente vino a mi mente un operador if en la ejecuci贸n de comandos.
le铆 esta referencia y no se ve tan descabellado.

https://www.ehu.eus/ehusfera/hpc/2013/10/24/comando-if-en-linux/#:~:text=El condicional if es un,dependiendo de la condici贸n especificada.&text=Aqu铆 si no se cumple,se ejecutan los comandos-3 .

Los operadores de control
Son los s铆mbolos reservados por la terminal que permiten ejecutar m谩s de un comando; es decir, se puede ejecutar de forma:
s铆ncrona (no paralela) la ejecuci贸n de los comandos es uno detr谩s de otro y se colocan los comandos separados por un punto y coma.
y as铆ncrona (paralela) la ejecuci贸n de los comandos es en forma paralela y se colocan los comandos por un (ampersand) &.
FORMAS CONDICIONALES:

  • AND (&&) se ejecutar谩 s贸lo si el comando ANTERIOR se ejecut贸.

  • OR (II) se ejecutar谩 s贸lo si el primer comando sea ejecutable, los dem谩s son ignorados.

cd directorio inexistente || touch file.txt && echo 'Archivo creado exitosamente' 

Resumen en Notion
https://n9.cl/njmgv

Excelente clase, muy buen tema, quiero regalar un aporte muy bueno que encontr茅, ya que al intentar ejecutar 鈥渃al鈥 me salia este error:

ls; mkdir holi; cal
Command 鈥榗al鈥 not found, but can be installed with:
sudo apt install ncal

Para lograr solucionarlo, ejecut茅 la actualizaci贸n del cach茅 de mi terminal as铆:

sudo apt update

Y de esta forma se actualiz贸 el cach茅 de la terminal y ya permitio ejecutar el cal

Y para el reto propuesto por el profe lo logr茅 ejecutando la linea de comando as铆:

cd errordedirectorio || touch archivo.txt && echo 鈥淎rchivo creado鈥

Y como resultado se obtuvo:

-bash: cd: errordedirectorio: No such file or directory
Archivo creado

Muchas gracias, espero mi aporte sea de utilidad鈥 saludos

Muy bien Explicada esta claseQ Me encantaron los ejemplos!

Para el reto se me ocurrieron estas dos propuestas.

#FORMA 1
cd hshjsjh || touch archivo.txt | echo "archivo creado"

# FORMA 2
cd asdasd || touch archivo2.txt && echo "ar
chivo creado"

Hola amigos馃槉, cumpliendo con el reto que dej贸 el teacher Enrique Devars al final de la clase corr铆 el siguiente comando:

mkdir "Documents" && echo "Directorio creado exitosamente" | lolcat && cd Documents && touch archivo.txt && echo "Archivo creado exitosamente" | lolcat

Y el resultado es鈥

Para m铆 la mejores forma de crear comandos de procesos de alta demanda adem谩s dejar corriendo en los servidores as铆 se te caiga la conexi贸n remota a ellos es usando el comando

screen

Luego si se te cae la conexi贸n puedes volver a entrar usando

screen -xrd 
cd test || touch archivo.txt && cowsay -f milk.cow "Archivo creado exitosamente!" | lolcat

Lo intente tambi茅n usando lolcat jijiji 馃榿

Que divertido que los operadores de and (&&) y de or (||) es igual que en algunos lenguajes de programaci贸n como JavaScript.

Mi ejercicio de esta clase

Reto:

cd fjgkgjh || touch hojd.txt && echo "Archivo Creado"

En el minuto 5:50 para un mejor ejemplo me gustar铆a a帽adir la instrucci贸n

eduardo@eduardo-ubuntu:~/test$ cd accesorios || touch archivo.txt && echo "Archivo creado"

Mi directorio test (mismo que el del ejemplo de la clase) no contiene nada, por lo que la primera instrucci贸n no se ejecutar谩, pero s铆 la siguiente touch archivo.txt y tambi茅n me imprimir谩 el mensaje Archivo creado
.

Mensaje que el archivo ha sido creado

Mimo mensaje, pero con la vaca

~/testeo$ cd hhhhhh || touch archibo.txt && echo "creadod"
bash: cd: hhhhhh: No existe el archivo o el directorio
creadod

Desaf铆o:
Yo lo pude ejecutar correctamente de dos formas:

mkdir prueba1; cd prueba1; touch archivo.txt; echo "El archivo se cre贸"

, y

 mkdir prueba3 && cd prueba3 && touch archivo.txt && echo "El archivo se cre贸"

Con el operador & no funciona, xq cuando llega al comando cd folder, como se ejecutan en paralelo, a煤n en ese momento no existe, entonces se corta el flujo de ejecuci贸n.
Con el operador ||, tampoco funciona, xq como lo que hace es buscar el valor verdadero, cuando lo encuentra sale del flujo de ejecuci贸n, entonces en este caso 1掳 se crea el directorio, y como ya eso es una condici贸n verdadera, luego deja de ejecutar el resto de la cadena de comandos.

Creo que si funcion贸 馃憤

A mi me sali贸 as铆:

cd hsjhajshj || touch archivo.jar && echo "Archivo creado"

Clase 9 鈥 Encadenando comandos: operadores de control


驴Qu茅 son los operadores de control?

  • Son s铆mbolos reservados por la terminal que nos permiten ejecutar m谩s de un comando o encadenarlo.

驴De qu茅 maneras podemos correr los operadores de control?

  • S铆ncrona.
  • As铆ncrona
  • Condicional.

驴Con que s铆mbolo podemos correr el operador de control que corre los comandos de manera s铆ncrona?

  • ;

驴Para qu茅 nos sirve el operador de control que corre los comandos de manera s铆ncrona?

  • Para ejecutar varios comandos al mismo tiempo.

驴Cu谩l es la sintaxis que necesitamos emplear para usar el operador de control s铆ncrono?

  • Comando; comando; comando

驴Para qu茅 nos sirve el comando cal?

  • Para imprimir en consola un calendario del mes y d铆a en el que nos encontramos en ese momento.

驴Con que s铆mbolo podemos correr el operador de control que corre los comandos de manera as铆ncrona?

  • &

驴Para qu茅 nos sirve el operador de control que corre los comandos de manera as铆ncrona?

  • Este nos permite ejecutar varios comandos al mismo tiempo, pero con la diferencia de que cada comando se ejecutara en un hilo diferente.

驴Cu谩l es la sintaxis que necesitamos emplear para usar el operador de control as铆ncrono?

  • Comando & comando & comando

驴Para qu茅 nos sirve el comando date?

  • Para imprimir la fecha y hora del momento en que ejecutamos el comando.

驴Con que s铆mbolo podemos correr el operador de control que corre los comandos de manera condicional?

  • &&

驴Para qu茅 nos sirve el operador de control que corre los comandos de manera condicional?

  • Este nos permite ejecutar varios comandos al mismo tiempo, pero solo si el comando anterior se ejecuta correctamente.

驴Cu谩l es la sintaxis que necesitamos emplear para usar el operador de control condicional?

  • Comando && comando && comando

驴Cu谩l es el s铆mbolo del operador de control condicional or?

  • ||.

驴Para qu茅 nos sirve el operador de control condicional or?

  • Nos permite ejecutar varios comandos al mismo tiempo sin importarle si el comando anterior se ejecuto correctamente. Este proceso lo har谩 hasta que ejecute todos los comandos que hayamos escrito en la terminal con dicho operador.

驴Para qu茅 son 煤tiles los operadores de control?

  • Para ejecutar m煤ltiples comandos al mismo tiempo.
  • Si queremos que un comando se ejecute solo si una condici贸n se cumple.

驴En qu茅 caso de uso en desarrollo web podemos usar los operadores de control?

  • Cuando queramos usar Webpack.

隆Las clases hasta ahora muy bien explicadas, muchas gracias!

mkdir archivoscow && mv /home/ubuntu/archivoscow /home/ubuntu/downloads && cowsay -f bunny 鈥溌xito!鈥 | lolcat

El reto

 cd asdfasd ||  touch archivo.txt && echo "Archivo Creado"

Reto cumplido

antoniotc_~$ mkdir reto && cd reto && touch reto.txt && cowsay "retocumplido" >> reto.txt && cat reto.txt

Comparto el reto, he notado que muchos tienen experiencia programando, yo soy nuevo, estudiar en Platzi es mi primer contacto.

Reto de clase

Reto de la clase:

cd asasasa | | touch archivo.txt && cowsay "alohomora" | lolcat

dejo un video para apoyarnos mas https://www.youtube.com/watch?v=gqo1TPqZRH4

Esta clase, aunque me dej贸 con una duda (la cual dej茅 en la secci贸n de preguntas) la verdad que fue bien interesante. Mi respuesta a la actividad del profesor es la siguiente:

Para aquellos que no sepan o no hayan hecho la actividad a煤n, tambi茅n se puede hacer la misma operaci贸n utilizando el 鈥&&鈥 en lugar del 鈥;鈥. La diferencia consiste en que 鈥;鈥 ejecutar谩 el echo una vez se haya creado el directorio, mientras que si usamos 鈥&&鈥 se ejecutar谩 el echo da igual lo que hagas. Al menos, seg煤n tengo entendido. Alguien corrijame si estoy mal por favor.

Ok, tambi茅n estaba experimentando con la terminal y poniendo y quitando cosas, descubr铆 esta combinaci贸n que posiblemente nunca usar谩n pero me hizo gracia y me hizo entender un poco m谩s los pipe operators y los nuevos operadores que reci茅n vimos:

No s茅, me pareci贸 divertida esa paradoja jajajaj

mkdir test_folder; cd test_folder; touch file.txt; echo 鈥渟e creo el archivo exitosamente鈥

cd adfgasdf || (touch hola.txt && echo 鈥淓l archivo se creo exitosamente鈥)

mi soluci贸n

Reto de la clase:

cd NotExiste || touch index.html && echo "Archivo creado"

Output:

cd: no such file or directory: NotExiste
Archivo creado

Se creo el archivo y nos muestra el mensaje

cd abcder || touch archivo_creado.txt && echo "Archivo creado"

Nos muestra:

-bash: cd: abcder: No such file or directory
Archivo creado
(base) abidantriguero@HPi7:~/miDirectorio$ ls
DirectorioPrueba    directorioprueba.txt  holi             output.txt  vaca.txt
archivo_creado.txt  error.txt             misarchivos.txt  test

Respecto a porque no se ejecut贸 echo 鈥淎rchivo creado鈥, es porque en realidad los operadores al parecer eval煤an la condici贸n anterior para ejecutar la siguiente instrucci贸n, && eval煤a que se true y || eval煤a que sea false,
cd ajknmsdklnmasdn = false || entonces ejecuto touch archivo.txt
touch archivo.txt = true (se ejecut贸 bien) entonces no ejecuto la siguiente instrucci贸n porque el resultado anterior debi贸 ser false

Mi respuesta al ejercicio:

cd Terminal\ y\ L铆nea\ de\ Comandos/Wildcards/ && mkdir  "Cowsay馃惍" && touch comando1.txt comando2.txt && ls -lha | lolcat && cowsay -f dragon-and-cow [Todo bien]

Una peque帽a soluci贸n para que muestre el mensaje:
cd ajshajsja || touch file.txt && echo 鈥淔ile created鈥

Mi aporte:

$ mkdir test && cd test || touch file.txt ; echo "Archivo Creado"
Archivo Creado

Para que aparezca el creado exitosamente podemos encadenarlo con un and

$ cd asdsafkjaskfas || touch archivo.txt && echo "archivo creado exitosamente"

Entendido

mkdir prueba && cd prueba && touch prueba.txt && echo "Se crea archivo" && ls -lha

ok

<code> cd test && touch ArchivoPrueba && echo " Archivo creado exitosamente"
<code>

cd skdmskdmksm || touch archivo.txt && echo "Archivo generado exitosamente"
cd jnesdk/ || touch archivoPrueba.txt && echo "Archivo creado"

El t茅rmino as铆ncrono se refiere al concepto de que m谩s de una cosa ocurre al mismo tiempo, o m煤ltiples cosas relacionadas ocurren sin esperar a que la previa se haya completado. Por otro lado, el t茅rmino sincr贸nico se refiere a la comunicaci贸n en tiempo real donde cada lado recibe, procesa o responde, mensajes instant谩neamente o lo m谩s cerca posible a instant谩neamente.

Reto completado

cd direc || touch archivo.txt && echo "Archivo creado"                                                                    
cd: no such file or directory: direc
Archivo creado

Resumen:

Los operadores de control son simbolos reservados por la terminal que nos permiten ejecutar m谩s de un comando.

Secuencia de comandos lineal ;
Su sintaxis es:

<Comando 1>; <Comando 2>; ... ; <Comando n>; 鈥

Y ejecuta un comando despues de otro hasta llegar al comando n-茅simo

Secuencia de comandos simultanea &
Su sintaxis es:

<Comando 1> & <Comando 2> & ... & <Comando n>; 鈥

Y ejecuta los n comandos de forma paralela (al mismo tiempo) en distintas terminales

Secuencia de comandos condicional &&
Su sintaxis es:

<Comando 1> && <Comando 2> && ... && <Comando n>; 鈥

Y ejecuta el k-茅simo comando si el comando k - 1 se ejecuta correctamente:

k - 1 correcto 鈬 k se ejecuta

Secuencia de comandos condicional ||
Su sintaxis es:

<Comando 1> || <Comando 2> || ... || <Comando n>; 鈥

Y ejecuta el k-茅simo comando si el comando k - 1 no se ejecuta correctamente:

k - 1 incorrecto 鈬 k se ejecuta

Concluyo:
&: Ejecuci贸n Paralela
; : Ejecuci贸n Secuencial

Ejecuci贸n Condicional
&&: Una secuencia de comandos separados por **&& **termina con el primer comando que falle.

||: Una secuencia de comandos separados por || termina con el primer comando que no falle

Por lo anterior un
if A then B else C puede ser similar a
A && B || C

Un tip adicional que encontr茅:
COMANDO &: Ejecuta el COMANDO en background.

隆隆隆隆 Advertencia: No se puede detener con Ctrl + C (por si es un proceso que demore ejemplo un tree de todo el disco)!!!

chrisguerrero@LAPTOP-A73AGLP5:~/test$ ls
archivo.txt  archivo1.txt
chrisguerrero@LAPTOP-A73AGLP5:~/test$ cd kksnkcn || rm archivo1.txt && echo "Archivo eliminado"
-bash: cd: kksnkcn: No such file or directory
Archivo eliminado
chrisguerrero@LAPTOP-A73AGLP5:~/test$ ls
archivo.txt

Uso un AND al final para que independientemente de si se pueda mover a un directorio o no, cree el archivo y muestre el mensaje

cd fjsajdkjskjfkjf || touch test.txt && echo "Archivo creado exitosamente"

Cumpl铆 el reto:
Pero en lugar usar echo us茅 cowsay

cd Documents && touch test.txt && cowsay "archivo creado exitosamente"

Reto:

Yo lo que hice fue poner $cd jdjfd || touch archivo.txt && echo 鈥淎rchivo creado鈥

Le puse en doble & debido a que con el | estamos indicando que si ya sucedi贸 la acci贸n anterior, no es necesario seguir a la siguiente. Esto lo pude concluir luego de hacer las siguientes pruebas:

  • $touch archivo2.txt || echo "archivo creado"
    Lo 煤nico que hizo es crear el archivo

  • $touch archivo3.txt && echo "Archivo creado"
    Crea el archivo e imprime el mensaje

Encadenado de comando:
-ls; mkdir holi; date >> fecha.txt ; mv fecha.txt holi
-cd holi/&& pwd && echo 鈥淭e haz movido de directorio鈥
-cd ejemplo || touch borrar.txt &&echo 鈥渁rchivo creado鈥

En mi caso he razonado que quiero guardar el output de un error en mi carpeta errores pero si dicha carpeta por alguna raz贸n no existe que lo haga en la carpeta backup.

cd errores || cd backup || ls Pictures 2> error.txt && echo "Guardo exitosamente"
 cd wer && mkdir dirA && echo "Se creo archivo en el directorio dirA" || cd holi && mkdir dirA && touch fileA.txt && echo "Se creo archivo en el directorio holi"
-bash: cd: wer: No such file or directory
Se creo archivo en el directorio holi

Hice un proceso con el operador && para que todas las sentencias se ejecuten exitosamente antes de poder seguir con la cadena de comandos.

En la primera parte si se coloca primero el mkdir y luego el ls, se crea la carpeta primero y luego ah铆 si la muestra鈥

mkdir holi; ls; cal; date

Hola! Yo lo que hice no fue usar el or de manera triple. Solo lo us茅 en las dos primeras condiciones, donde, o nos mueve el directorio o crea el archivo. Luego que alguna de las dos sentencias se cumpla, muestre en pantalla con && el mensaje.

En el reto:

El operador de control realiza los comandos de manera paralela en segundo plano, muestra el error, pero no muestra la cadena de caracteres del echo.


Una manera para mostrar todo es con el siguiente comando:

cd jaljfadjf || touch archivo.txt & echo "Archivo creado"

Apuntes:

Los operadores de control permiten ejecutar m谩s de un comando, encadenando los mismos.

Comandos separados por ;

  • Con el punto y coma se pueden separar diferentes comandos para que se ejecuten de manera s铆ncrona es decir uno detr谩s de otro.

Comandos separados por &

  • Con este comando se pueden separar diferentes funciones para que se ejecuten de manera as铆ncrona es decir todos al tiempo cada una genere un hilo distinto.

comandos separados por &&

  • Comando (AND) ejecuta cada comando solo si el anterior ya se ejecuto exitosamente.

Comandos separados por ||

  • Comando (OR) ejecuta cada comando hasta que uno sea exitoso y descarta los comandos que se encuentren despu茅s del que se ejecut贸 exitosamente.

Reto solucionado, el comando ser铆a:

cd wawawawa || touch archivo2.txt && echo 鈥淎rchivo creado鈥

OPERADORES DE CONTROL
S铆mbolos reservados por la terminal que nos permiten ejecutar m谩s de un comando o concatenarlos.

Operadores de control
Son s铆mbolos que est谩n reservados por la terminal y permiten ejecutar m谩s de un comando

De manera sincr贸nica

  • ls; mkdir holi; cal
  • Lista, luego crea un directorio 鈥渉oli鈥, luego muestra un calendario

De manera as铆ncrona
Va a utilizar distintos hilos para ejecutar de manera paralela

  • ls & date & cal

De manera condicional

  • mkdir test && cd test
  • Se ejecuta el segundo solo si el primero se ejecuta de manera correcta
  • || es 鈥淥R鈥, hay que tener muy en cuenta la l贸gica

RETO:

cd asdasd || touch archivo.txt && echo "Archivo creado"