Cómo escribir dentro de un archivo Bash en Linux

4 gen 2021 3 min di lettura
Cómo escribir dentro de un archivo Bash en Linux
Indice dei contenuti

Introducción

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

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

Escribir en un archivo usando operadores de redireccionamiento

En Bash, la redirección de 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:

output > filename 
output >> filename 
  • El operador de redireccionamiento >escribe la salida en un archivo en particular. Si el archivo existe, se trunca a una longitud cero. Si no es así, se crea el archivo. Tenga mucho cuidado al utilizar este operador, ya que puede sobrescribir un archivo importante.
  • El operador de redireccionamiento >>agrega la salida a un archivo determinado. El archivo se crea si no existe.

Debe tener permisos de escritura para el archivo. De lo contrario, obtendrá un error de permiso denegado.

Aquí hay un ejemplo simple que muestra cómo redirigir la salida del comando echoa un archivo:

echo "this is a line" > file.txt

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

set -o noclobber
echo "this is a line" > file.txt

Dovresti visualizzare un messaggio di output simile al seguente:

bash: file.txt: cannot overwrite existing file

L'operatore >| consente di sovrascrivere l'opzione "noclobber" di Bash:

set -o noclobber
echo "this is a line" >| file.txt

L'operatore >> aggiunge l'output alla fine del file, invece di sovrascrivere il file:

echo "this is a line" >> file.txt

Usa il comando printf se vuoi creare un output complesso:

printf "Hello, I'm %s.\n" $USER > file.txt

Se vuoi scrivere più righe in un file, usa il reindirizzamento Here document (Heredoc).

Ad esempio, puoi passare il contenuto al comando cat e scriverlo in un file:

cat << EOF > file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

Per aggiungere le righe, cambiare > con >> prima del nome del file:

cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

Puoi scrivere l'output di qualsiasi comando in un file:

date +"Year: %Y, Month: %m, Day: %d" > file.txt

L'output del comando date verrà scritto nel file.

Escribir en un archivo usando el comando tee

El comando teelee desde la entrada estándar y escribe simultáneamente en la salida estándar y en uno o más archivos:

echo "this is a line" | tee file.txt

El comportamiento predeterminado del comando teees sobrescribir el archivo especificado, como operador >. Para agregar la salida al archivo, invoque el comando con la opción -a( --append):

echo "this is a line" | tee -a file.txt

Si no desea que el comando   teeescriba en la salida estándar, puede redirigirlo a /dev/null:

echo "this is a line" | tee file.txt >/dev/null

Para escribir texto en más de un archivo, especifique los archivos como argumentos de comando tee:

echo "this is a line" | tee file_1.txt file_2.txt file_3.txt

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

echo "this is a line" | sudo tee file.txt

La salida del comando echose pasa como entrada a tee, lo que aumenta los permisos de sudo y escribe el texto en el archivo.

Conclusión

En Linux, al texto de escritura a un archivo, utilice los operadores de redirección >y >>o el comando tee.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.