Hay varias formas de leer y escribir un archivo en bash. La forma más sencilla es utilizar los operadores> y >>.
- > el operador sobrescribirá los datos existentes
- >> el operador agregará datos
El formato general del uso de operadores de redirección es:
Datos> Nombre de archivo
Datos >> Nombre de archivo
Comprendamos el procedimiento de escritura en un archivo con un ejemplo:
Cómo escribir un archivo usando operadores de redirección
Como se mencionó anteriormente, el enfoque simple y directo de escribir en un archivo es usar operadores de redirección. Por ejemplo, si desea cambiar el texto de un archivo ya existente, primero cree un archivo de texto con el nombre de testfile.txt y escribe cualquier cosa en él:
Guarde el archivo de texto.
Escriba el comando mencionado a continuación en la terminal:
$ echo Sobrescribir el texto existente en el archivo> testfile.txt
Escurrir demasiado puede ser riesgoso; por lo tanto, es una buena práctica habilitar noclobber. Establecer noclobber bloquearía cualquier sobrescritura en cualquier archivo existente.
$ set –o noclobber$ echo Sobrescribir el texto existente en el archivo> testfile.txt
Pero si desea evitar el noclobber, utilice el >| operador en lugar de > :
$ echo Sobrescribir el texto existente en el archivo> | testfile.txtO simplemente puede desactivar noclobber:
$ set +o noclobber
Pero este comando eliminará la protección de todos los archivos.
La salida anterior indica que se ha sobrescrito el texto existente. Ahora, usemos el >> operador:
$ echo Agregar texto al archivo de texto existente >> testfile.txt
echo no siempre es ideal para usar ya que no puede formatear el texto usándolo, por lo tanto, use printf en lugar de echo para formatear el texto como se muestra en el siguiente comando:
$ printf Bienvenido n Este es un nuevo archivo de texto. > newtestfile.txt
Comprendamos el concepto con un ejemplo de script bash. Abra Vim escribiendo vim en la terminal. Si no tiene el editor Vim en su dispositivo, instálelo usando:
$ sudo apt install vimEscriba el guión:
#! / bin / bashecho Introduce tu nombre
leer nombre
echo $ nombre> data_dir.txt
echo Introduce tu edad
leer edad
echo $ age >> data_dir.txt
cat data_dir.txt
los gato El comando se usa para crear y editar los archivos. Guarde el script anterior en Vim cambiando de modo después de presionar el Esc clave y luego escriba : en myscript.sh . Abra la terminal y ejecute el código:
Cómo escribir un archivo usando Heredoc
Si desea escribir varias líneas, el método más sencillo es usar Heredoc. Aquí el documento, también conocido como Heredoc, es un bloque de código multipropósito. La sintaxis de Heredoc es:
Mando<<[-] Delimiter.
texto / comandos
.
Delimitador
Se puede usar cualquier cadena en lugar de Delimitador, y también se puede usar para eliminar cualquier espacio de tabulación en el archivo. Entendamos esto con un ejemplo simple:
#! / bin / bashgato<< TEXTFILE
Este es un archivo de texto.
Este archivo se crea utilizando heredoc.
ARCHIVO DE TEXTO
El comando script cat anterior crea un archivo de texto con el nombre de TEXTFILE y escribe texto en el archivo recién creado. Ahora guarde el archivo con el nombre de myscript.sh . Inicie la terminal y ejecute el script.
Cómo escribir un archivo usando el comando Tee
Otro método para escribir un archivo es usar el comando Tee. Como nombre que indica, este comando toma la entrada y escribe en un archivo y muestra la salida simultáneamente. De forma predeterminada, el comando Tee sobrescribirá los datos existentes.
$ echo Este es un texto | tee textfile.txt
Para agregar use –a:
$ echo Este es otro texto | tee –un archivo de texto.txt
Para escribir varias líneas, use:
$ echo Agregar texto a varios archivos | tee textfile1.txt textfile2.txt textfile3.txt
El comando anterior creará tres archivos si no existen y escribirá texto en cada uno de ellos.
Conclusión
Esta guía se centra en múltiples enfoques para escribir en un archivo en bash con ejemplos. En bash scripting, hay varias formas de escribir un archivo, pero la más simple es usar operadores de redirección>, >>. Para escribir varias líneas, se puede utilizar heredoc, y si desea escribir los mismos datos en varias líneas, el comando tee es bastante útil.