Introducción
En Bash, hay varias formas de agregar texto a un archivo. Este artículo explica algunos de ellos.
Para agregar texto a un archivo, debe tener permisos de escritura. De lo contrario, obtendrá un error de permiso denegado.
Utilice el operador de redireccionamiento >>
La redirección le permite tomar la salida de un comando y enviarla como entrada a otro comando o archivo. El operador de redireccionamiento >>
agrega la salida a un archivo dado.
Hay una serie de comandos que puede utilizar para imprimir texto en la salida estándar y redirigirlo al archivo, siendo echo
y printf
los más utilizados.
Para agregar texto a un archivo, especifique el nombre del archivo después del operador de redireccionamiento:
echo "this is a new line" >> file.txt
Cuando se usa con la -e
, el echo
interpreta los caracteres de barra invertida de escape como una nueva línea \n
:
echo -e "this is a new line \nthis is another new line" >> file.txt
Si desea producir una salida más compleja, use el printf
que le permite especificar el formato de la salida:
printf "Hello, I'm %s.\n" $USER >> file.txt
Puede agregar la salida de cualquier comando a un archivo. Aquí hay un ejemplo con el comando de date
date +"Year: %Y, Month: %m, Day: %d" >> file.txt
Cuando agregue un archivo a una redirección, tenga cuidado de no usar el >
que sobrescribe un archivo existente.
Usa el comando tee
tee
es una utilidad de línea de comandos en Linux que lee desde la entrada estándar y escribe tanto en la salida estándar como en uno o más archivos simultáneamente.
De forma predeterminada, el tee
sobrescribe el archivo especificado. Para agregar la salida al archivo, use tee
con la -a
( --append
):
echo "this is a new line" | tee -a file.txt
Si no desea que tee
escriba en la salida estándar, rediríjalo a /dev/null
:
echo "this is a new line" | tee -a file.txt >/dev/null
La ventaja de usar el tee
lugar del >>
es que tee
permite agregar texto a varios archivos a la vez y escribir en archivos propiedad de otros usuarios junto con sudo
.
Para agregar texto a un archivo para el que no tiene permisos de escritura, anteponga sudo
antes del tee
como se muestra a continuación:
echo "this is a new line" | sudo tee -a file.txt
tee
recibe la salida del echo
y, con los permisos sudo, escribe en el archivo.
Para agregar texto a más de un archivo, especifique los archivos como argumentos para el comando tee
echo "this is a new line" | tee -a file1.txt file2.txt file3.txt
Conclusión
En Linux, para agregar texto a un archivo, use el operador de redirección >>
o el comando tee