Escribir dentro de archivos
Clase 31 de 43 • Curso de Programación en Bash Shell
Contenido del curso
Clase 31 de 43 • Curso de Programación en Bash Shell
Contenido del curso
Víctor Macedo Becerril
Reinaldo Mendoza
Valente IA
Reinaldo Mendoza
Enzo Venturi
Yohanna Patricia Rodríguez Ortega
Jose Miguel Diaz
Edinson Padrón
Fredy Mendoza Vargas
freddy molleda
rusbel bermúdez rivera
Luis Romero
Alfonso Adame Rueda
Adam Lei-Yi Chen Abolacio
Matías Daniel Cravero
Emerson Cedeño
Erik Elyager
Erik Elyager
Jose Suarez
Reinaldo Mendoza
Reinaldo Mendoza
Emerson Cedeño
Gabriel De Andrade
Emmanuel Sosa Reyes
Anthony Smith Quispe De la cruz
Diego Fernando Marin Lozano
Diego Fernando Marin Lozano
Mario Alexander Vargas Celis
Luberliz Cueva Llanos
Omar Rodríguez Aldama
Joserra Parada Fontaiña
Jose Suarez
Edinson Padrón
Alfonso Adame Rueda
Marco Antonio Montero Merlos
Marvin Javier Santos Fernández
EOM: End Of Message EOF: End Of File
Gracias
para complementar la información de esta clase; Para escribir en un archivo podemos utilizar >> y > >>, si no existe el archivo, se creará, si existe, se agregara al final del archivo. >, si no existe el archivo, se creara, si existe, será reemplazado
que buen aporte
[💡] Hincapié
>> # Concatena > # Reemplaza
Gracias por tu aporte
<< EOM/EOF
Gracias por el aporte. En el video no se explica mucho al respecto.
Gracias por el aporte
Aquí les dejo un link a una clase del curso introducción a la terminal, ahi se explica más detalladamente el uso del << y del >> , ayuda mucho a asimilar el conocimiento . https://platzi.com/clases/1276-terminal-2019/11189-streams/
ese curso sigue siendo mi referencia de cabecera
Muchas gracias bro, excelente como explica Beto
Madre mía con el tema del tema
Llega un momento que ya lo asimilas, pero cuesta jajaja
cómo podría uno en lugar de escribir un texto en un archivo, enviar este texto por correo?
Esto da para un tutorial, pero te doy la guía para que empieces. Se puede hacer con el comando mail en linux y macOS sólo tienes que configurar tu SMTP.
Una vez que lo tengas configurado el comando podría ser algo como:
cat body.txt | mail -s "Título del Correo" myfriend@gmail.com
Creo que falto profundizar en este tema, veremos si en las próximas clases amplia el tema.
Si, este estuvo muy superficial el tema
Si una de las preguntas del examen es cuantas veces se dijo tema en el curso, va a estar difícil
escribir en archivos se hace muy útil al programar scripts mediante crontab (por ejemplo), como si fueran logs ... ahora bien, cómo se hace si uno quisiera enviar por correo y no escribir en archivos?
Tendrías que tener una integración a una API de un servicio que te permita hacer esto, por ejemplo con curl, pero en este caso creo que sería mejor correr un Script en un lenguaje de más alto nivel, como JavaScript o Python que tienen mejor integración con APIs :D
Hay una aplicación que sirve para enviar correos mediante la consola. Si tienes que instalar varias cosas que funcione correctamente. Creo se llama "mailx" o algo así. Yo la usaba para hacer respaldos automáticos y enviarlos por correo inmediatamente.
Buenas, estoy probando a escribir por la terminal lo siguiente:
echo << STOP Dos lineas STOP
Y no entiendo porque no me lo imprime por pantalla si esas dos líneas son el argumento de echo, un saludo.
tienes un error, ese tipo de redirección requiere 3 signos de <, debería ser:
echo <<< STOP
Dos
lineas
STOP
Corrección, me confundí de Shell, con doble < debería funcionar!
En **Bash**, hay varias formas de escribir dentro de archivos, ya sea para agregar contenido, sobrescribir o modificar archivos existentes. Aquí te muestro cómo hacerlo utilizando redirecciones y algunos comandos básicos.
### Métodos para escribir en archivos
1. **Redireccionar con > (sobrescribir el archivo)**:
Este método sobrescribe el archivo existente o crea uno nuevo si no existe.
- Ejemplo: Escribir "Hola Mundo" en un archivo llamado archivo.txt (sobrescribirá el contenido existente).
```bash
echo "Hola Mundo" > archivo.txt
```
2. **Redireccionar con >> (agregar al archivo)**:
Usa >> para agregar contenido al final de un archivo sin borrar su contenido actual.
- Ejemplo: Agregar "Nueva línea" al final de archivo.txt.
```bash
echo "Nueva línea" >> archivo.txt
```
3. **Usar cat para escribir múltiples líneas en un archivo**:
Puedes usar cat con una redirección para escribir varias líneas en un archivo.
- Ejemplo: Escribir múltiples líneas en archivo.txt:
```bash
cat > archivo.txt << EOL
Esta es la primera línea
Esta es la segunda línea
EOL
```
En este caso, EOL es un delimitador que indica el final del texto a escribir.
4. **Usar tee para escribir en un archivo**:
El comando tee puede redirigir la salida a un archivo. Si lo usas sin la opción -a, sobrescribirá el archivo; con la opción -a, lo agregará.
- Ejemplo: Escribir "Texto nuevo" en archivo.txt (sobrescribir):
```bash
echo "Texto nuevo" | tee archivo.txt
```
- Para agregar sin sobrescribir:
```bash
echo "Texto adicional" | tee -a archivo.txt
```
5. **Escribir desde un script Bash**:
Puedes escribir directamente desde un script Bash utilizando las redirecciones que ya conoces.
- Ejemplo: Script que escribe en un archivo:
```bash
#!/bin/bash
echo "Escribiendo desde un script" > script_output.txt
```
- Guarda este script como escribir.sh y hazlo ejecutable:
```bash
chmod +x escribir.sh
```
- Luego ejecútalo:
```bash
./escribir.sh
```
6. **Leer y escribir usando read**:
Puedes usar el comando read para capturar la entrada del usuario y luego escribirla en un archivo.
- Ejemplo: Leer una línea del usuario y escribirla en archivo.txt:
```bash
read -p "Escribe algo: " input
echo $input >> archivo.txt
```
### Ejemplo práctico:
Si quieres combinar varias de estas técnicas en un script para escribir en un archivo de forma interactiva y guardar el contenido:
\#!/bin/bash \# Script para escribir en un archivo de forma interactiva echo "Escribe el nombre del archivo (se creará si no existe):" read nombre\_archivo \# Escribir la primera línea (sobrescribiendo el archivo) echo "Escribe la primera línea (sobrescribiendo):" read primera\_linea echo $primera\_linea > $nombre\_archivo \# Agregar más líneas (sin sobrescribir) while true; do   echo "Escribe una línea más (o escribe 'salir' para terminar):"   read nueva\_linea   if \[ "$nueva\_linea" == "salir" ]; then   break   fi   echo $nueva\_linea >> $nombre\_archivo done echo "Contenido guardado en $nombre\_archivo."
Este script te permite escribir interactivamente en un archivo, comenzando por sobrescribirlo y luego agregando nuevas líneas hasta que el usuario escriba "salir".
### Resumen de las redirecciones:
- >: Sobrescribe el archivo.
- >>: Agrega contenido al archivo.
- tee: Escribe en el archivo y muestra el contenido en la terminal al mismo tiempo.
# !/bin/bash # Programa para mostrar como se escribe en un archivo # Autor: Luber Cueva echo "Escribir en un archivo" echo "Valores escritos con echo " >> $1 #Adición multilínea cat <<AVION >>$1 $2 echo "Otra linea más" asdasdadada AVION
Salida:
Valores escritos con echo Valores con el comando cat echo "Otra linea más" asdasdadada
palabras comunes en este curso: tema ejemplificar
<<[-]palabra lineas lineas lineas delimitador
cat <<EOF>>ficheroDondeEscribo linea 1 linea 2 linea 3 EOF
Dejo el ejercicio.
# ! /bin/bash # Programa para escribir en un archivo # Autor Marco echo "Escribir en un Archivos" echo "Valores escritos con el comando echo" >> $1 #adicion multilinea cat <<EOM >>$1 $2 EOM
En este script se utiliza redirección. Para más información visiten este enlance.
por si de pronto les pasa no se puede dejar un espacio en la palabra reservada EOM marca un error de final de archivo.
Lo intente realizar con el espacio y si me dio el resultado deseado, en centos 7.7