Skip to content

02 Redireccion de Output

Alan edited this page Jun 13, 2026 · 1 revision

Redirección de Output

Tabla de Contenidos

File Descriptors

Los file descriptors son números enteros que el sistema operativo utiliza para identificar los archivos abiertos de un proceso. Los tres file descriptors estándar son:

  • 0: stdin
  • 1: stdout
  • 2: stderr

Estos números son los que utilizamos en los operadores de redirección (e.g., 2> para redirigir stderr, 1> o simplemente > para stdout).

Redirección del stdout

Por defecto, el stdout es mostrado en la terminal, pero podemos redirigirlo a un archivo utilizando el operador > (write: sobreescribe el contenido de un archivo), o el operador >> (append: añade texto en un archivo) de la siguiente manera:

admin@server:~$ comando > archivo
admin@server:~$ comando >> archivo

Por ejemplo:

admin@server:~$ ls /var/log > ls_stdout_.txt
admin@server:~$ ls /var/log >> ls_stdout_.txt

Si el comando anterior produjo stdout, entonces este se habrá almacenado en el archivo especificado. Si el comando anterior produjo stderr, este se mostrará en la terminal.

Redirección del stderr

Por defecto, el stderr es mostrado en la terminal, pero podemos redirigirlo a un archivo utilizando el operador 2> (write: sobreescribe el contenido de un archivo), o el operador 2>> (append: añade texto en un archivo) de la siguiente manera:

admin@server:~$ comando 2> archivo
admin@server:~$ comando 2>> archivo

Por ejemplo:

admin@server:~$ ls /root 2> ls_stderr.txt
admin@server:~$ ls /root 2>> ls_stderr.txt

Si el comando anterior produjo stderr, entonces este se habrá almacenado en el archivo especificado. Si el comando anterior produjo stdout, este se mostrará en la terminal.

Redirección de stdout y stderr

Existen ocasiones donde queremos redirigir el stdout y stderr a archivos separados. Esto lo podemos lograr utilizando los operadores > y 2>, por ejemplo:

admin@server:~$ ls /usr/bin /bin /root > ls_stdout_.txt 2> ls_stderr.txt

En caso de que queramos redirigir el stdout y stderr al mismo archivo, podemos hacerlo de las siguientes maneras:

admin@server:~$ comando > archivo 2>&1
admin@server:~$ comando 2> archivo 1>&2
admin@server:~$ comando &> archivo

Important

El orden importa: > archivo 2>&1 NO es lo mismo que 2>&1 > archivo:

  • En el primer caso, primero se redirige stdout al archivo, luego stderr sigue a stdout (al archivo).
  • En el segundo caso, stderr se redirige a donde actualmente apunta stdout (la terminal), luego stdout se redirige al archivo.

Por ejemplo:

admin@server:~$ ls /usr/bin /root > output.txt 2>&1
admin@server:~$ ls /usr/bin /root 2> output.txt 1>&2
admin@server:~$ ls /usr/bin /root &> output.txt

Note

En estos ejemplos se utilizaron solo operadores de redirección write (>, 2>, &>). También podemos utilizar sus equivalentes append, para evitar sobreescritura (>>, 2>>, &>>).

Los comandos anteriores funcionan de manera similar. Cabe destacar que:

  • En el primer comando, el 2>&1 significa: manda el stderr al mismo lugar que el stream 1 (stdout), en este caso al archivo especificado.

  • En el segundo comando, el 1>&2 significa: manda el stdout al mismo lugar que el stream 2 (stderr), en este caso al archivo especificado.

  • En el tercer comando, el &> significa: redirige el stdout y el stderr a un mismo archivo.

Tip

el operador &> ha sido introducido en versiones recientes de bash, por lo que recomiendo utilizarlo solo en la terminal. Para bash scripting recomiendo utilizar cualquiera de los métodos anteriores para garantizar una mayor compatibilidad.

Descarte de stdout y stderr

Hay algunos casos en los que no queremos el stdout o stderr de un comando, para ello podemos redirigirlo al archivo especial /dev/null de la siguiente manera:

admin@server:~$ comando > /dev/null
admin@server:~$ comando 2> /dev/null
admin@server:~$ comando > /dev/null 2>&1
admin@server:~$ comando &> /dev/null

Por ejemplo:

admin@server:~$ cat archivo > /dev/null
admin@server:~$ cat archivo 2> /dev/null
admin@server:~$ cat archivo > /dev/null 2>&1
admin@server:~$ cat archivo &> /dev/null

Tip

Prueba estos cuatro comandos con archivos existentes e inexistentes y observa su comportamiento.

Note

El archivo /dev/null es un archivo especial que, al escribir texto en él, es descartado (no se almacena). Ejecute man 4 null para más información.

Referencias

  • Shotts, W. (2019). Redirection. The Linux Command Line (2nd ed., pp. 49-60). No Starch Press.

Introducción a los Sistemas Operativos

Introducción a Linux

Licencias de Software

Archivos y Directorios

Introducción a la CLI

Manipulación de Archivos y Directorios

Documentación y Exploración de Comandos

Redirección

Búsqueda de Archivos y Texto

Editores de Texto de Terminal

Gestión de Usuarios y Grupos

Propiedad y Permisos

Herramientas Esenciales

Hardware

Apéndice

Clone this wiki locally