Introducción
Al trabajar con Bash, puede haber ocasiones en las que necesite agregar texto a un archivo. Afortunadamente, existen varias formas de realizar esta tarea. Este artículo explica algunos de ellos.
Para agregar texto a un archivo, debe tener permisos de escritura sobre él. De lo contrario, recibirá un error de permiso denegado.
Agregar a un archivo usando el operador de redirección (>>)
La redirección le permite tomar el resultado de un comando y enviarlo como entrada a otro comando o archivo. El operador de redirección >>
agrega la salida a un archivo determinado.
Hay varios comandos que puede utilizar para imprimir texto en una salida estándar y redirigirlo al archivo. Los dos comandos más utilizados para este propósito son echo
y printf
.
Para agregar texto a un archivo, ejecute el comando que imprime el texto y especifica el nombre del archivo después del operador de redirección:
echo "this is a new line" >> file.txt
Cuando se usa con la opción -e
, el comando echo
interpreta los caracteres de barra invertida como líneas nuevas \n
:
echo -e "this is a new line \nthis is another new line" >> file.txt
Para producir una salida más compleja, puede usar el comando printf
, que le permite especificar el formato de la salida:
printf "Hello, I'm %s.\n" $USER >> file.txt
Otra forma de agregar texto a un archivo es utilizar el documento Aquí (Heredoc). Es un tipo de redirección que le permite pasar varias líneas de entrada a un comando.
Por ejemplo, puedes pasar el contenido al comando cat
y agregarlo a un archivo:
cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as: $(whoami)
EOF
Puede agregar la salida de cualquier comando a un archivo. Aquí hay un ejemplo con el comando date
:
date +"Year: %Y, Month: %m, Day: %d" >> file.txt
Al agregar un archivo mediante una redirección, tenga cuidado de no utilizar el operador >
para sobrescribir un archivo existente importante.
Agregar a un archivo usando el comando tee
tee
es una utilidad de línea de comandos de 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 comando tee
sobrescribe el archivo especificado. Para agregar la salida al archivo use tee
con la opción -a
( --append
):
echo "this is a new line" | tee -a file.txt
Si no desea tee
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 comando tee
sobre >>
es que tee
le permite agregar texto a múltiples archivos simultáneamente y escribir en archivos propiedad de otros usuarios junto con sudo
.
Para agregar texto a un archivo para el cual no tiene permisos de escritura, antepóngale sudo
como tee
que se muestra a continuación:
echo "this is a new line" | sudo tee -a file.txt
tee
recibe el resultado del comando echo
, eleva los permisos de sudo y 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
Si está trabajando con Linux y necesita agregar texto a un archivo existente, tiene un par de opciones. Una forma es utilizar el operador de redirección >>
, que agregará el texto al final del archivo sin sobrescribir ningún contenido existente. Otra opción es usar el comando tee
, que no sólo agrega el texto al archivo, sino que también lo muestra en la pantalla a medida que se agrega.
Si tienes alguna pregunta o comentario, no dudes en dejar un comentario.