Linux

Escritura Bash en archivo

Escritura Bash en archivo

Una de las tareas más comunes al escribir scripts Bash o trabajar en la línea de comandos de Linux es leer y escribir archivos.

Este artículo explica cómo escribir texto en un archivo en Bash, utilizando los operadores de redirección y tee mando.

Escribir en un archivo usando operadores de redirección #

En Bash, la redirección de la salida le permite capturar la salida de un comando y escribirla en un archivo.

El formato general para redirigir y escribir la salida en un archivo es el siguiente:

salida> nombre de archivo salida >> nombre de archivo 

Necesita tener permisos de escritura en el archivo. De lo contrario, recibirá un error de permiso denegado.

Aquí hay un ejemplo simple que muestra cómo redirigir la salida de la eco comando a un archivo:

echo "esto es una línea"> archivo.TXT

Para evitar sobrescribir archivos existentes, habilite la opción "noclobber" con el colocar incorporado:

set -o noclobberecho "esto es una línea"> archivo.TXT
bash: archivo.txt: no se puede sobrescribir el archivo existente 

La > | El operador le permite anular la opción Bash "noclobber":

set -o noclobberecho "esto es una línea"> | expediente.TXT

La >> el operador agrega la salida al final del archivo, en lugar de sobrescribir el archivo:

echo "esto es una línea" >> archivo.TXT

Utilizar el printf comando para crear una salida compleja:

printf "Hola, soy% s.\ n "$ USER> archivo.TXT

Si desea escribir varias líneas en un archivo, use la redirección del documento Aquí (Heredoc).

Por ejemplo, puede pasar el contenido al gato comando y escribirlo en un archivo:

gato << EOF > expediente.txt El directorio de trabajo actual es: $ PWD Ha iniciado sesión como $ (whoami) EOF 

Para agregar las líneas, cambie > con >> antes del nombre del archivo:

gato << EOF >> archivo.txt El directorio de trabajo actual es: $ PWD Ha iniciado sesión como $ (whoami) EOF 

Puede escribir la salida de cualquier comando en un archivo:

fecha + "Año:% Y, Mes:% m, Día:% d"> archivo.TXT

La salida de la fecha el comando se escribirá en el archivo.

Escribir en un archivo usando el tee Comando #

La tee El comando lee de la entrada estándar y escribe tanto en la salida estándar como en uno o más archivos simultáneamente.

echo "esto es una línea" | archivo de tee.TXT

La tee El comportamiento predeterminado del comando es sobrescribir el archivo especificado, igual que el > operador. Para agregar la salida al archivo, invoque el comando con el -a (--adjuntar) opción:

echo "esto es una línea" | tee -a archivo.TXT

Si no quieres el tee para escribir en la salida estándar, puede redirigirlo a / dev / null:

echo "esto es una línea" | archivo de tee.txt> / dev / null

Para escribir el texto en más de un archivo, especifique los archivos como argumentos a la tee mando:

echo "esto es una línea" | tee file_1.txt file_2.txt file_3.TXT

Otra ventaja del tee comando es que puede usarlo junto con sudo y escribir en archivos propiedad de otros usuarios. Para agregar texto a un archivo para el que no tiene permisos de escritura, anteponga sudo antes de tee:

echo "esto es una línea" | archivo de camiseta sudo.TXT

La eco la salida del comando se pasa como entrada al tee, que eleva los permisos de sudo y escribe el texto en el archivo.

Conclusión #

En Linux, para escribir texto en un archivo, use el > y >> operadores de redirección o el tee mando.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.

Cómo mostrar el contador de FPS en juegos de Linux
Los juegos de Linux obtuvieron un gran impulso cuando Valve anunció el soporte de Linux para el cliente Steam y sus juegos en 2012. Desde entonces, mu...
Cómo descargar y jugar Sid Meier's Civilization VI en Linux
Introducción al juego Civilization 6 es una versión moderna del concepto clásico introducido en la serie de juegos Age of Empires. La idea era bastant...
Cómo instalar y jugar a Doom en Linux
Introducción a Doom La serie Doom se originó en los años 90 después del lanzamiento del Doom original. Fue un éxito instantáneo y, desde ese momento e...