Ejercicios, ejemplos y tests para practicar el STANDAR INPUT, STANDAR OUTPUT y STANDAR ERROR:
https://linuxjourney.com/lesson/stdout-standard-out-redirect
 y obtuviste un Standard Output (la lista de archivos).
Si quieres que el Standard Output no vaya a la consola sino hacia un archivo, entonces puedes usar el operador > seguido del nombre del archivo en el que quieres guardar la salida.
ls -l > output.txt
Suponiendo que ya tienes el archivo output.txt y ahora también quieres guardar la información de la carpeta de documentos, entonces no puedes volver a ejecutar: ls -l > output.txt
Esto lo que hará es reescribir el contenido del documento, lo que necesitas es concatenar el contenido del documento con el de la salida, para eso ejecutas: ls -l >> output.txt
Como puedes ver, la salida del comando ls -l
se concatenó con la salida del comando ls -l ./SecretosDeEstado
. Te puedes dar cuenta porque la palabra total se repite dos veces.
Por cierto, esa palabra total es el tamaño total de la carpeta en kilobytes y dice que la carpeta SecretosDeEstado pesa 0, porque los archivos y carpetas vacías no ocupan espacio.
El operador de redirección por defecto solo redirecciona el file descriptor 1 (es decir, el Standard Output). Pero, ¿qué tal si queremos redirigir un error? Pues tenemos que especificar que queremos el Standar Error, que tiene el file descriptor 2.
Vamos a generar un error ejecutando un comando que saldrá mal para redirigirlo a un archivo llamado "error.txt".
En este caso la opción "ñ" no existe, por lo que produce un error.
También podemos especificar que no importa lo que pase si me da un Standar Ouput o un Standar Error, igual tiene que guardar la salida en un archivo. Esto lo hacemos así:
ls -l > output.txt 2>&1
La orden 2>&1
significa que debe redirigir el file descriptor 2 y el file descriptor 1.
En la primera ejecución del comando, se ejecuta correctamente y guarda el Standar Output, pero en la segunda ejecución, el comando falla y guarda el Standar Error.
| Operador | Función | | --- | --- | | > | Redirecciona la salida. Por defecto redirecciona el Standar Output | | >> | Concatena la salida con lo que ya tenga el archivo a donde se está redirigiendo la salida | | 2> | Redirecciona el file descriptor 2 (En este caso Standar Error) | | 2>&1 | Redirecciona el file descriptor 2 y 1 |
Contribución creada con los aportes de: Miguel Gonzalez.
Aportes 320
Preguntas 92
Ejercicios, ejemplos y tests para practicar el STANDAR INPUT, STANDAR OUTPUT y STANDAR ERROR:
https://linuxjourney.com/lesson/stdout-standard-out-redirect
: Entrada estándar.
stdout (1): Salida estándar.
stderr (2): Salida de errores.
Redirige el input de un comando hacia un archivo.
comando < archivo
Redirige la salida de un comando a un archivo. El mismo sobrescribe el contenido del archivo a donde se redirige la salida.
comando > archivo
Concatena la salida de un comando a un archivo. Si no existe el archivo lo crea.
comando >> archivo
Redirige la salida de error de un comando a un archivo.
comando 2> archivo
Redirige la salida de un comando, que se ejecuto satisfactoriamente o un comando que presento errores, a un archivo.
comando > archivo 2>&1
Los comandos son los que el profe dejo en el PDF de la clase anterior, gracias profe Enrique. ✌️
El standard input es la forma en la que capturamos información de un comando, ya sea por medio de pipes, redirección, teclado, etc. Se identifica con el descriptor de archivo “0”. Ejemplo. vemos lo que hay dentro del archivo animals.txt
Ahora ejecutamos el standard input
a ese archivo.
Lo que sucedio fue que tomamos toda la información que se encuetra en el archivo “animals” en este caso los nombres de animales escritos de forma aleatoria y al redireccionar el archivo al comando sort, este ordena la lista alfabeticamente.
La redirección input se puede emplear para pasar datos de entrada a un archivo de Python a ejecutar.
Por ejemplo si tenemos un programa que convierte dólares a pesos colombianos:
Archivo de texto con el valor de 100 dólares a convertir.
Ahora empleamos el archivo input_dollars.txt como entrada para el programa in_out.py, recibe los 100 dólares y continua con el algoritmo.
Redirecciones: Cómo funciona la shell.
>
. Por ejemplo ls > misarchivos.txt
, entonces la salida del comando se guarda en ese archivo de texto. Siempre crea este archivo (si ya existe, lo reescribe).✍🏽"comando" >> "archivo"
. Esto ambos solo redirigen los stdout
.stderr
, agregas su file descriptor "comando" 2> "archivo"
. 👽"comando" >> "archivo" 2>&1
.stdin
se usa <
. Esto te permite tener de entrada de comandos algún archivo.La siguiente tabla detalla todas las posibles formas de direccionamiento y los símbolos que se utilizan para lograrlo.
hola estuve investigando y me incontre con una pagina que explica como utilizar las redirecciones de forma correcta, en que momentos se deben utilizar y una tabla con los comandos explicados
https://www.linuxtotal.com.mx/index.php?cont=redireccionamiento-en-linux
✨ Las redirecciones nos permiten trasladar información, haciendo uso del símbolo >.
Para los que somos novatos y repetimos el video varias veces y solo entendimos el 15%… este video explica más detalladamente el tema:
https://www.youtube.com/watch?v=wGfD5NyZrcs&ab_channel=JavierPedrero
WOWW eSTOY APRENDIENDO MUCAHS COSAS PARA MI VIDA LABORAL QUE EN LA UNIVERSIDAD NUNCA SE ENSEÑAN. GRACIAS PLATZI
Les dejo mi aporte de uso de standar input para un programa de python.
Explicación: Tengo un archivo .txt que solo tiene un número, y en python solicito que el usuario ingrese un valor con un input. Por lo tanto ejecuto mi programa de python y le paso como input el archivo de txt.
Saludos desde Uruguay!
El stdin es 0, el stdout es 1, y el stderror 2
Les comparto los comandos aprendidos en esta clase:
ls dirTest1 > misDirTest1.txt
: En vez de listar en pantalla, lo que hace es mandar el resultado en texto al archivo “misDirTest1.txt”, y si no existe ese archivo lo crea. Si vuelvo a usar el mismo archivo, siempre crea nuevamente el archivo y lo sobreescribels downloads >> misDirTest1.txt
: En vez de listar en pantalla, lo que hace es mandar el resultado en texto al archivo “misDirTest1.txt”, agregando el output al final del archivo, si este ya tiene contenido, es decir concatenando el texto.ls f2q3fdfsd 2> error.txt
: Además de mostar el error en pantalla, este comando envía el texto del error a un archivo, si el archivo no existe lo crea. Si vuelvo a usar el mismo archivo, siempre crea nuevamente el archivo y lo sobreescribe2>&1 ¿ cómo ++interpretarlo ?++
El número 1 representa a la salida estándar stdout y el número 2 representa a la salida de errores stderr.
utilizar 2>1 “redirige la salida de errores a un archivo llamado 1”. Así que gracias al símbolo & podemos distinguir los archivos normales de los descriptores especiales: 1 es un archivo llamado 1 y &1 es el descriptor de la salida estándar (stdout).
Por todo esto, redirigir los errores a la salida normal se indica como 2>&1.
Otra forma de explicarlo sería la siguiente:
El símbolo > redirige la salida estándar (stdout). Por ejemplo a un archivo: echo ... > archivo.txt
Poniendo un número por delante de > rediriges sólo la salida indicada: 1> es la salida estándar y 2> es la salida de errores. Ejemplo: echo ... 2> archivo.txt
Para distinguir los archivos de los descriptores, se pone el símbolo & delante del número del descriptor. Ejemplo: echo ... 2> &1
en la Shell nosotros tenemos una entrada que es un Standard Input(0) entra a nuestro comando, y ahora solo tiene dos opciones, que nos muestra un standard output(1) que es una salida convencional de un comando pero también hay un standard error(2), que es cuando el fichero que buscamos no existe o cualquier error de este tipo.
Las redirecciones sirven por si queremos guardar la salida de un comando, como un ls que nos muestra todos los archivos, pues estos se rediccionaran a un archivo.
ls Pictures > nombreArchvo.txt
Este comando se ejecuta pero en vez de mostrar salida, hace que todo lo que nos muestra se guarda en el archivo que pongamos después. Si este archivo no existe, se crea automáticamente.
Si nosotros solo ponemos el operador de “>” no concatena, solo crea el archivo y lo sobrescribe. Si queremos concatenar mas texto lo tenemos que hacer con “>>”. Si este comando nos muestra un error, la salida no se guardara en ningún lado. Pero si queremos guardar el error y redirigirlo, tenemos que usar el numero asignado. “2>”. Si queremos combinar un standard output y un standard error, tenemos que poner:
ls carpeta > archivo.txt 2>&1
Donde lo importante para poder abarcar los dos es: “2>&1”
Diagrama de como funciona la shell
💡 Los streams son flujos de información relacionadas con algún instrucción realizada, en proceso o terminada.
.
Definición
*Cuando se interactúa con la bash, hay tres flujos importantes:
.
Redirecciones de salida
Hay dos formas de redireccionar la salida a un archivo
n>
Redirecciona la salida para con un archivo.
n>>
Redirecciona la salida para con un archivo, concatenando contenido.
.
Considere que se deberá tener permisos de escritura en el destino del archivo.
.
Algunas veces, pudiera necesitar el redirigir el stdout y el stderr para con un archivo. Esto es a menudo hecho para automatizar procesos o trabajos en background, generando un log o registro. Por ello, usamos &>
&>>
donde indicamos el orden u el tipo de salida.
Cabe mencionar que el orden es importante, por ejemplo:
# 1
command 2> &1>output.txt
# 2
command >output.txt 2>&1
stderr
es redirigido al actual localización del stdout
y, luego, stdout
es redirigido al output.txt
pero esta segunda redirección, solamente afecta al stdout
ignorando al stderr
stderr
es redirigido a la actual localización del stdout
que es el stdout
, se la otorgue de un fichero “usuarioInfo.txt”
sudo adduser Victor < usuarioInfo.txt
Para redirigir ambos, tanto el stdout como el stderr se puede usar una forma reducida:
<comando> &> archivo.txt
Tengo unos 500 archivos en Descargas y con lo enseñado en la clase, pude copiar los nombres de cada uno de los archivos en un documento txt. Me llevó menos de un minuto y se organizan en orden alfabético… Genial!
Creo que la parte que no queda 100% clara es el uso de 2>&1
. En este link lo explican en forma breve y detallada.
Operadores de redirección
( > ) Redirecciona stdout hacía un archivo. Lo crea si no existe, si existe lo sobreescribe.
( >> ) Redirecciona stdout hacía un archivo. Lo crea si no existe, si existe concatena la salida al final de este.
( < ) Redirecciona stdin desde un archivo. El contenido de un archivo es la entrada o input del comando.
2> o 2>> Redirecciona stderr hacía un archivo. Crea (>) o concatena (>>) la salida de errores a un archivo.
1>&2 Redirecciona stdout hacía donde stderr apunte.
2>&1 Redirecciona stderr hacía donde stdout apunte.
Para quienes no tengan claro que hace el comando “cat”, sirve para leer datos de archivos y mostrar sus contenidos.
Ej: cat archivo.txt --> El output seria el contenido de archivo.txt
¿Porqué no explicaron desde el colegio? Es de gran utilidad.
Encontre este cuadro y me parece super util para entender mejor:
 desde un archivo
y redirecciona su salida a otro archivo
EL FILE DESCRIPTOR 1 ES EL DEFAULT
En los ejemplos anteriores no es necesario especificar el file descriptor (FD) ya que el FD 1 es el default. Los siguientes ejemplos son equivalentes:
$> date > fecha.txt
$> date 1> fecha.txt
Para el caso del stderr, FD 2, si es necesario indicarlo siempre. Como veremos en los siguientes ejemplos.
Este link recomiendo unicamente la tabla resumen, ya que las explicaciones me parecieron un tanto confusas.
https://www.linuxtotal.com.mx/index.php?cont=redireccionamiento-en-linux
Representación de entradas y salidas:
.
Redirecciones
→ redirecciona el output (1 por defecto)
Les comparto mi apunte de la clase que complementé con información extra acerca de STDERR:
Entrada estándar (stdin, 0): Es el medio por el cual el shell recibe datos desde el teclado, archivos o la salida de otros comandos.
La entrada estándar de un comando es el teclado por defecto. Sin embargo, podemos redirigirlo a un archivo de la siguiente manera:
$ <comando> < <archivo>
Salida estándar (stdout, 1): A través de esta, el shell nos muestra la salida de un comando en la terminal.
La salida estándar por defecto de un comando es la terminal. Pero podemos redirigirla hacia un archivo u otro comando como sigue:
$ <comando> > <archivo>
En este caso debemos tener cuidado, ya que redirigiendo la salida de esta manera, el archivo siempre será sobrescrito con la salida del comando. Para concatenar la salida del comando al contenido del archivo lo hacemos de la siguiente manera:$ <comando> >> <archivo>
$ <comando 1> | <comando 2>
Error estándar (stderr, 2): Por medio este, el shell nos muestra un error de salida en la terminal.
La salida de error estándar por defecto de un comando es la terminal. Podemos redirigirla a un archivo con:
$ <comando> 2> <archivo>
También podemos hacer algo como lo siguiente
$ <comando> > <archivo> 2>&1
En los sistemas basados en Unix (Linux, MacOS), estos tres componentes se representan por medio de archivos. A cada proceso que ejecutamos en el sistema (un comando, por ejemplo) se le asigna su propia triada de archivos para enviar o recibir datos.
Si nosotros quisiéramos redireccionar la salida de un comando 1 a la entrada de un comando 2, esperaríamos que la salida del primero sea la adecuada para que el segundo pueda ser ejecutado correctamente.
$ <comando 1> > <comando 2>
Sin embargo, si por alguna razón la ejecución del comando 1 fallara y este nos retorna un error, no queremos que el error de salida se redireccione a la entrada del comando 2. Para ello, la salida de error estándar nos otorga otro “canal” a través del cual podemos enviar los errores a la salida, de modo que no estaríamos enviando el error a la salida estándar sino a la salida de error estándar, es decir, no enviamos el error a la entrada estándar del segundo comando sino a la terminal.
Para ahorrar espacio podemos usar el “>” mas el nombre del archivo.
(> archivo.txt)
Con esto borraremos el contenido del archivo. Dicho contenido que consideramos que ya no nos es útil claro esta.
Hola muchachos… si depronto alguien tuvo problemas para instalar el WLS para windows… les recomiendo instalar una máquina virtual con linux, y practican las clases desde ahi. Con darle 2 de ram y 20Gb de disco funcionó de maravilla. saludos desde cali colombia
En Standar Input (<) se utiliza regularmente cuando a algún comando le queremos pasar información de un archivo.
Lo que no me gusta es que defrente pasa a enseñarnos a redireccionar los standard input, std oupt y std error. Sin embargo, no ahonda en que es un std oupt y std error. Se me hace todo muy abstracto y no termino de comprender lo que estamos haciendo dentro de la terminal. Alguien tiene algún link o algo para ahondar en estos conceptos y entender mejor lo que estamos haciendo. Gracias 😃
Diablos he fallado, toca repasar 😦
Si al igual que a mi, no entendiste muy bien esta clase, aca les dejo un link que me ayudo a entenderlo mucho mejor.
https://www.youtube.com/watch?v=oeJwZ1_iPo0
Otra forma de redirigir tanto el Standard output como el Standard Error es de la siguiente manera:
ls asdasdas &> output.txt
Es una forma mas sencilla y facil de recordar
Cosas a tener en cuenta
ls > archivos.txt: nos permite en un documento txt (este creado o no) almacenar es formato texto todos los archivos existentes en la carpeta donde estemos.
ls jajaja 2> archivos.txt: Si no esta creado el archivo jajaja la terminal nos arrojará error y esa linea de error se nos guardará en el documento archivos.txt eliminando lo que teníamos antes guardado ahí.
ls jajaja 2>> archivos.txt: nuevamente, si no está creado un documento llamado jajaja nos arrojará error en la terminal y esa línea de error se agregará en nuestro documento archivos.txt junto con lo que tenemos allí escrito…
Espero haberme hecho entender…
REDIRECCIONES:
Diferencia entre 2> y 2>&
Primero tenemos que entender que si tengo un output usamos:
>
para las salidas correctas, ya que los errores no nos lo redireccionará.2>
para los errores, puesto que las salidas correctas no nos la redireccionará2>&1
nos permite abordar los 2 casos, pues si fue correcta nos dará enviara lo correcto y si fue un erro lo hará también a diferencia de las otrasMi aporte para los operadores de redireccionamiento.
Recuperado de:
https://www.linuxtotal.com.mx/index.php?cont=redireccionamiento-en-linux
Hola a todos, fui **recopilando todos los comandos ** y sus descripciones, las compartí en Github para que puedas verlas, copiarlas y/o modificarlas
https://github.com/SuKuShaing/ComandosDeGit/blob/main/ComandosTerminalLinux.txt
Las redirecciones permiten a los archivos de comandos manipular para duplicar, abrir, cerrar, o referir a un archivo diferente otro archivo. Las redirecciones son procesadas en el orden en que aparecen, de izquierda a derecha.
Cada redirección puede ser precedida por un numero file descriptor . Si el _file descriptor es omitido, y el primer caracter de la redirección es ‘<’ la redirección refiere al standar input, si el operador es ‘>’ la redirección refiere al standar output
más información https://www.gnu.org/software/bash/manual/bash.html
Cuando ingresamos un comando en la terminal, este produce una salida, normalmente hacia la terminal, mostrándonos el resultado de ese comando. Por ejemplo: Si utilizamos el comando “ls” el resultado de ese comando sera mostrarnos una lista de los archivos y directorios que tenemos EN LA TERMINAL.
La finalidad de la redirecciones es la de, justamente, redireccionar el resultado o información del comando hacia por ejemplo un archivo txt. Para que nos sirve esto? Nos permite guardar la información ofrecida por el comando para a posterior, verlo, analizarlo, etc, y asi no usar este meme cada que ejecutemos un comando y limpiemos pantalla.
.
.
MIS APUNTES
Las redirecciones utilizan > para mandar información de un lugar a otro, esta información puede ser exitosa (stdout) o puede ser el error como tal(stderr). El problema es que al usar > sólo sobrescribimos el archivo cada vez que lo vayamos a utilizar, en caso de querer meterlo todo dentro del mismo hay que concatenar >>
ls stdin 2 > error.txt
Podemos manejar las entradas y salidas de los comandos y procesos para encadenar unas con otras.
stdin (standard input) [0]: comando que ingresa a la shell
stdout (standard output) [1]: comando exitoso de salida
stderr (standard error) [2]: comando de error de la salida
[file descriptor]: es un identificador unico para recursos de entrada/salida.
> //redirige la salida de un comando como entrada para otro, sobreescribiendo el anterior si existe
ls Pictures > listaArchivos.txt
>> //redirige la salida de un comando como entrada para otro, concatenando el anterior si existe
ls Pictures >> listaArchivos.txt
2> /redirige una salida de error como entrada, por ejemplo si queremos loguear un error.
ls asdasdasd 2> error.txt
Podemos utilizar ambas redirecciones, por ejemplo si queremos loguear un error en caso de que ocurra.
ls Pictures > output.txt 2> error.txt
Lo que puedo agregar para el std in es que al ejecutar el siguiente código:
command < NameFile
echo holaMundo > file.txt
cat < file.txt
El file.txt servirá como un argumento para el comando “cat” , por ello, como la función del “cat” es leer, la salida que verás será la lectura del archivo llamado file.txt.
holaMundo
Reto.
stdin, re dirigimos con < .
Ejemplo:
Tenemos un archivo con una lista de nombres de frutas llamado:
lista.txt
Manzana
Piña
Uva
Sandía
la ordenamos con el comando sort y guardamos en el archivo: lista_ordenada.txt
$sort < lista.txt > lista_ordenada.txt
visualizamos el archivo lista_ordenada.txt y nos devuelve la lista ordenada:
cat lista_ordenada.txt
Manzana
Piña
Sandía
Uva
La verdad no entendí nada nada nada nada nada nada nada de este video. lo he visto varias veces pero es como si se hablara en koreano. Espero poder aclararlo con practica.
Reto completado, estándar input, primera forma de usarlo:
<:~$ explorer.exe .
:~$ cat Hi.txt
Ryaa
Merlijaj
Mirai
Moshie
Ember
Annie
Anastasia
Kyomi
:~$ sort < Hi.txt
Anastasia
Annie
Ember
Kyomi
Merlijaj
Mirai
Moshie
Ryaa
:~$
>
• Para redirigir un standard output se utiliza el operador > y el nombre del archivo que se creará y almacenará el output del comando
• Si quiero concatenar varios outputs en el mismo archivo debo usar >> ya que si sólo uso > lo sobrescribirá
• El identificador de standard error es 2, para que el archivo almacene el standard error hay que poner 2> (por defecto es 1>)
• Para redirigir al archivo el resultado sin importar si es un error(2) o un output correcto(1) hay que usar 2>&1
Sobre el reto de stdin
wc -l < principios_de_usabilidad.md
dando como salida 21
Con el operador “<” lo que se busca en pasar un archivo o entrada al comando descrito en la parte derecha del operador.
El comando wc - l, imprime el número de líneas dentro del archivo.
Saludos
Entiendo lo que hace el último ejemplo, pero no encuentro su finalidad…
Jejejeje, hasta el momento en mi terminal en Windows solo he podido ejecutar el cd . y cd … De resto nada me ha servido. Tocará instalar maquina con Linux para poder aprender
Esto lo usarán en Python cuando usen entornos virtuales.
Creo que la manera correcta de explicar 2>&1 es que se redirige el descriptor de error estandar hacia el descriptor de salida estandar, no que redirecciona ambos. Por eso si se requiere mandar ambos a un archivo se usa:
algun_comando > archivo.txt 2>$1
Esto es, la salida estandar se redirige hacia archivo.txt y el error estandar se redirige hacia la salida estandar (que ya está redirigida al archivo).
Saludos
algunas cosas que hice el en curso de programacion basica
entonces
input = <
output = >
Muy bueno, pero a la vez que peligroso usar el << porque te terminas comiendo un <, reescribiste tu archivo ja.
Standard input - commando - standard output or standard error
esto me recordo mucho al log::info teh laravel
Reto: Redirigir stdin
Para el ejemplo cree un archivo que contiene nombres de manera desordenada. Luego utilizo sort y redirecciono la salida a otro archivo, donde se guardan ordenados alfabéticamente.
Podemos hacer un “stdin” (standar input) a través de un comando o archivo y esté nos puede regresar ya sea un standar output o un error. Para redirigir algo usamos el símbolo “>” y luego ponemos el nombre del archivo al que lo queremos mandar. Sin embargo esto va a sobreescribir los cambios, si queremos que se concatenen tenemos que usar “>>”.
Para redigir un error, podemos hacer por ejemplo: ls asfgsah 2>error.txt
Para redigir tanto un error como un ouput, debemos hacer, por ejemplo: ls -l> output.txt 2>&1
Nota:
En esta pagina viene mucha informacion de las redirecciones
https://www.informit.com/articles/article.aspx?p=2854374&seqNum=5
Les comparto mis notas de esta clase
Creo que para adentrarse un poco mas en lo que se esta explicando aqui ya que no me parece que fuera muy claro el contenido les dejo este video que deja mas claro lo que son las redirecciones https://youtu.be/V3_71elmThQ
Redirecciones
Cuando escribimos un comando existente en la terminal, en nuestra pantalla se imprime la ejecución de este. Y lo que nos arroja es a lo que llamamos un output.
Pero, ¿qué sucede cuando no queremos que la ejecución de un comando se imprima en nuestra pantalla (terminal), sino en un nuevo fichero o en uno existente?
Bueno, lo que tendríamos que hacer es redireccionarlo de esta manera: $ comando > fichero.txt. Esto en “cristiano” lo podemos entender así: lo que me ibas a imrpimir en la terminal con este comando quiero que lo hagas en el fichero. Además, si queremos concatenar este comando con alguno otro, lo que tendríamos que hacer es colocar >> (redirección doble) . Y se vería de esta manera: $ new_comando >> fichero.txt.
Pero, ¿por qué no lo podemos concatenar con > (redirección simple)?
Porque si lo hacemos así, lo que sucede es que el nuevo comando sobrescribe al primero que pusimos, es decir, lo borra por completo.
Sé que puede ser muy confuso de entender esto al inicio. Por ello planteo un ejemplo muy didáctico:
"""Lo que el comando echo hace es imprimir en la terminal
el mensaje que queramos, que en esta caso es la palabra hola """
$ echo hola
"""Pero, resulta que nosotros no queremos que aparezca en nuestra pantalla,
sino redireccionarlo a un fichero llamado saludo.txt .
Por ello, debemos escribir lo siguiente:"""
$ echo hola > saludo.txt
"""Y si nosotros revisamos el contenido de saludo.txt
lo que nos saldrá es la palabra hola.
(El comando cat nos ayuda ver el contenido de un archivo)"""
$ cat saludo.txt
hola
"""Y si ahora queremos añadir el nombre de una persona, lo
que tenemos que haceres lo siguiente: """
$ echo Carlos >> saludo.txt
"""Y si revisamos el contenido"""
$ cat saludo.txt
hola
Carlos
``
Espero que haya sido útil.
<
(redirección entrada).>
(redirección salida).>>
Para concatenar las salidas.comand > output 2>&1
redirecciona el salida a un archivo output
, en caso de error este sera redireccionado al mismo archivo.-La redirección consiste en cambiar la forma de ver el resultado de un comando.
-Por defecto siempre la salida o el resultado lo vemos por la pantalla.
-Con la redirección podemos guardar ese resultado en un archivo texto, para fines posteriores, uno de ellos podría ser usar este archivo texto como entrada de otro comando.
Esto se logra con la ayuda del símbolo mayor que >
-Si usamos > una sola vez creamos el archivo texto, en caso que no exista,
-Para redireccionar la entrada de un comando, (generalmente es por teclado) podemos usar un archivo
tenemos que usar el símbolo contrario ósea menor que <
cat procesos.txt
Aquí les dejo uno de los enlaces que me ayudo a terminar de entender la redirección en la terminal.
https://atareao.es/tutorial/terminal/redirigir-entrada-y-salida-en-linux/
Video recomendado
Me fallo desde que estoy en el windows terminal y no tengo imágenes, hubiera sido genial para los que utilizamos windows como ‘‘colocar’’ imágenes y desde ahí iniciar, esta clase no la pude hacer, trate de mover carpetas o con archivos pero no me salio, igual con la practica si lo necesito lo podre aprender creo, vamos con fe
Hola amigos, tengo la duda de por que no imprime en terminal el error cuando usamos el comando que @codevars usó.
2>&1
Suponiendo que deberia de mostrar en terminal el resultado y a demas guardarlo en un archivo (por eso el orden 2>&1)
A lo cual intenté el siguiente comando y me funcionó tanto para guardar el stdout y el stderr sin necesidad de priorizar el orden de ejecucion ya que parece un poco confuso por que el profe no lo demostro en el video.
&>
Creo que es la manera mas facil de capturar la salida de un comando cuando no sabemos sin sera un stderr o un stdout.
Comando | Función |
---|---|
> | redireccionar ciertos archivos seleccionados a un archivo a conveniencia (siempre crea un nuevo archivo y lo sobreeescribe |
>> | adiciona y redirecciona al mismo archivo si ya se ha creado uno antes |
Te explicaste muy mal con el último ejemplo
Pueden agregar texto nomal y comun y corriente como
“Hwllo World” de la siguiente forma:
echo "Hello World" >> hola_mundo.txt
o tambien
echo " This text will appear with Hello world" >> hola_mundo.txt
A mi me sive eso para agregar variables de entorno en instancias o servidores y si no quiero usar vim o nano. Copio y pego y solo se las paso a un archivo .env y listo.
Para redirigir:
>
Para concatenar:
>>
Para captar error o salida:
2>&1
Por acá también lo explican!
No me quedaba claro acerca de redirigir el STANDAR INPUT, porque pensé que servía para ejecutar código, por ejemplo:
Tengo un archivo ruta.txt que contiene la ruta “~/repositories/”, y ejecutando:
cd < ruta.txt
esperaba que me llevara al directorio que se encuentra en el archivo, pero no.
Leyendo los aportes, me di cuenta que estaba mal, en realidad, un uso que se le puede dar al redirigir un STANDAR INPUT es el de pasar datos. Por ejemplo tengo un archivo languages.txt que contiene:
css
html
javascript
java
angular
c#
c++
python
y al ejecutar:
sort < languages.txt
lo que obtengo es una lista ordenada de los elementos:
angular
c#
c++
css
html
java
javascript
python
¿Qué necesitamos entender para poder manejar las redirecciones?
¿Cuáles son las partes que conforman el ciclo de ejecución de un comando?
¿Qué es standart input?
¿Podemos redirigir el standart input a archivos de texto?
¿Cómo describe la terminal al standart input?
¿Cómo conocemos a los números con los que identifica la terminal al Estándar input, output y error?
¿En dónde entra el Standart input en la terminal?
¿Cuáles son las posibilidades que podemos obtener al ejecutar un comando?
¿Qué es standart output?
¿Qué es Standart error?
¿Con que números interpreta la Shell a standart output y el standart error?
¿Cómo puedo guardar el contenido de un directorio en un archivo de texto?
¿Qué pasa cuando redireccionamos el contenido de un directorio a un archivo que no existe?
¿Cuándo enviamos el contenido de un directorio a un archivo de texto plano a qué nos referimos?
¿Cuándo enviamos nuevo contenido de un directorio a un archivo de texto qué le pasa al contenido previamente almacenado en dicho archivo?
¿Cómo podemos concatenar contenido viejo de un directorio con uno nuevo al enviarlo a un archivo de texto?
¿Cómo le indicamos a la terminal que lo que queremos redireccionar es el estándar output?
¿Cómo le indicamos a la terminal que lo que queremos redireccionar es el estándar error?
¿Cómo podemos redirigir el Standart output y el Estándar error a un archivo de texto al mismo tiempo?
¿Por qué son útiles las redirecciones?
A la primera entrada, se le conoce como Standard Input o stdin 0, la que proviene de nuestro teclado (normalmente), pero también se puede redireccionar.
Para encontrar un archivo que empiece con un numero:
ls [[:digit:]]*
Cuando quieres redireccionar un stderr usas: comando 2> prueba.txt
Para redireccionar un error stderr sin sobrescribir usa:
comando 2>> prueba.txt
DE ESTA FORMA NO SOBRESCRIBES UN ARCHIVO YA EXISTENTE. SOLO AÑADES INFORMACION AL MISMO.
EJEMPLO:
ls “Hola bb” 2> prueba.txt
ls “Hola vv” 2>> prueba.txt
ls “Hola vv estoy almacenando los errores sin sobreescribir” 2>> prueba.txt
less prueba.txt
ls: cannot access ‘Hola bb’: No such file or directory
ls: cannot access ‘Hola vv’: No such file or directory
ls: cannot access ‘Hola vv estoy almacenando los errores sin sobreescribir’: No such file or directory
prueba.txt (END)
EXPLICACIÓN DE STANDAR INPUT
Intente redirigir el comando tree
tree -L 2 > tree.txt
STANDAR INPUT
Consiste en los datos que son enviados al programa.
Su símbolo es <
explicación de los file descriptor que se utilizan en la shell
No estuvo muy claro al final pero el último que explicó “2>&1” entendí que sirve para que guarde ya sea el error o el stdout en cualquiera que sea el caso.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.