En ocasiones, es posible que desees redirigir la salida de un resultado específico hacia un archivo para poder examinar el error más adelante.
Y en ese caso, puedes redirigir el flujo de datos hacia un archivo. Así que, en este tutorial, te guiaré a través de cómo redirigir la salida hacia un archivo.
Cómo redirigir la salida a un archivo
Antes de adentrarnos en la parte práctica, es necesario comprender los conceptos básicos de los flujos de datos.
Existen tres tipos de flujos de datos:
- Flujo de datos de entrada (denotado como 0)
- Flujo de datos de salida (denotado como 1)
- Flujo de datos de error (denotado como 2)
Ahora, echemos un vistazo a los símbolos y números de redirección en Linux:
Indicador | Descripción |
---|---|
0 | Flujo de datos de entrada. |
1 | Flujo de datos de salida. |
2 | Flujo de datos de error. |
> | Redirige la salida estándar hacia un archivo o comando. |
< | Redirige la entrada estándar desde un archivo o comando. |
>> | Agrega la salida estándar al final de un archivo. |
2> | Redirige el error estándar hacia un archivo o comando. |
2>> | Agrega el error estándar al final de un archivo. |
Echemos un vistazo a ejemplos.
Redirigir la salida a un archivo (sobrescribe los datos existentes)
Como mencioné anteriormente, debes utilizar el símbolo > de la siguiente manera:
$ comando > nombre_de_archivo
Por ejemplo, aquí utilicé el comando sudo apt update y redirigí la salida al archivo actualizar.txt.
$ sudo apt update > actualizar.txt
[sudo] password for marcocarmonapy:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Y ahora, si utilizo el comando 'cat' para mostrar el contenido del archivo, debería mostrar la salida del comando 'apt update':
$ cat actualizar.txt
Get:1 file:/var/cuda-repo-ubuntu2204-12-2-local InRelease [1 572 B]
Get:1 file:/var/cuda-repo-ubuntu2204-12-2-local InRelease [1 572 B]
Get:2 https://dl.google.com/linux/chrome/deb stable InRelease [1 825 B]
Get:3 http://packages.microsoft.com/repos/code stable InRelease [3 569 B]
Hit:34 https://debian.qgis.org/debian jammy InRelease
Fetched 4 178 kB in 5s (779 kB/s)
Reading package lists...
Building dependency tree...
Reading state information...
All packages are up to date.
Pero espera, si acostumbras redirigir la salida de la manera mostrada, sobrescribirás el contenido existente del archivo, por lo que si no deseas sobrescribir el contenido, aquí te muestro cómo hacerlo.
Redireccionar la salida a un archivo sin sobrescribir
Como mencioné antes, si no deseas sobrescribir el contenido del archivo existente, utiliza >> en lugar de >:
$ comando >> nombre_de_archivo
Por ejemplo, en este caso, estaré utilizando un archivo de texto de muestra llamado hola.txt el cual contiene lo siguiente:
$ cat hola.txt
Hola, mundo
Saludos de Marco Carmona
Y ahora, utilizaré el comando "echo" y redirigiré la salida al archivo "hola.txt":
$ echo Lineas por ser agregadas >> hola.txt
$ cat hola.txt
Hola, mundo
Saludos de Marco Carmona
Lineas por ser agregadas
¡Aquí lo tienes!
Bono: Redirecciona la salida usando el comando "tee"
Si no te agrada la idea de usar los indicadores de redirección, puedes emplear el comando tee de la siguiente manera para lograr el mismo efecto:
$ comando | tee nombre_de_archivo
Aquí utilicé el archivo llamado hola.txt, el cual ya contenía algún texto en su interior:
$ echo Hola, otra vez | tee hola.txt
$ cat hola.txt
Hola, otra vez
Espero que encuentres útil esta guía.