Explorador
Chuleta

Redirecciones y pipes

Los tres canales de todo proceso, los operadores para redirigirlos a archivos y cómo encadenar comandos con pipes.

Actualizado el

En esta guía

Los tres canales

Todo proceso nace con tres canales abiertos:

Canal Número Por defecto
stdin (entrada) 0 teclado
stdout (salida) 1 pantalla
stderr (errores) 2 pantalla

Operadores

Operador Qué hace
> Redirige stdout a un archivo, sobrescribiéndolo
>> Redirige stdout agregando al final
< Toma la entrada desde un archivo
2> Redirige solo los errores
&> Redirige salida y errores al mismo archivo
2>&1 Manda los errores al mismo destino que la salida
| Conecta la salida de un comando con la entrada del siguiente

Sobrescribir o agregar

echo "línea 1" > notas.txt
echo "línea 2" > notas.txt       # sobrescribe
cat notas.txt                    # solo "línea 2"

echo "línea 3" >> notas.txt      # agrega
cat notas.txt                    # línea 2 y línea 3

Trampa clásica: > vacía el archivo antes de que corra el comando. Por eso sort datos.txt > datos.txt deja el archivo vacío.

Errores y salida por separado

ls /tmp /noexiste > salida.txt 2> errores.txt
ls /noexiste 2> /dev/null        # descarta los errores
ls /tmp /noexiste &> todo.txt    # ambos al mismo archivo

/dev/null es el “agujero negro”: lo que se escribe ahí desaparece.

Pipes: encadenar comandos

ls /usr/bin | wc -l               # cuántos comandos hay
ps aux | grep bash                # filtrar procesos
cut -d: -f1 /etc/passwd | sort    # lista de usuarios, ordenada
history | tail -5                 # últimos 5 comandos
echo "hola" | tee saludo.txt      # muestra y guarda a la vez

La filosofía Unix es que cada herramienta hace una cosa bien y se combinan con |.