GNU/Linux >> Tutoriales Linux >  >> Linux

Bash:escribir en archivo

Una de las tareas más comunes al escribir scripts de 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, usando los operadores de redirección y tee comando.

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 resultados en un archivo es el siguiente:

output > filename 
output >> filename 
  • El > El operador de redirección escribe la salida en un archivo dado. Si el archivo existe, se trunca a la longitud cero. De lo contrario, se crea el archivo. Tenga mucho cuidado al utilizar este operador, ya que puede sobrescribir un archivo importante.
  • El > El operador de redirección agrega la salida a un archivo dado. El archivo se crea si no existe.

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 del echo comando a un archivo:

echo "this is a line" > file.txt

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

set -o noclobberecho "this is a line" > file.txt
bash: file.txt: cannot overwrite existing file

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

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

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

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

Usa el printf comando para crear una salida compleja:

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

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

Por ejemplo, puede pasar el contenido al cat comando y escríbalo en un archivo:

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

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

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

Puede escribir la salida de cualquier comando en un archivo:

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

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

Escribir en un archivo usando el tee Comando #

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

echo "this is a line" | tee file.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 -a (--append ) opción:

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

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

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

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

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

Otra ventaja de la 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 del tee :

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

El echo 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 tee comando.


Linux
  1. Cómo escribir un bucle en Bash

  2. El Bash'?

  3. ¿Realizando operaciones de escritura atómica en un archivo en Bash?

  4. ¿Escribir todo el desplazamiento hacia atrás de Tmux en un archivo?

  5. Redirigir toda la salida al archivo en Bash

Bash:Agregar al archivo

Sustitución de cadena en Bash

35 ejemplos de secuencias de comandos Bash

Bash scripting:cómo escribir datos en archivos de texto

Script Bash (III)

Tutorial de Unix Sed:Cómo escribir en un archivo usando Sed