Pixelaula.
Shell y archivos · Lección 1 de 5

Tres canales y una tubería

Todo programa lee de un canal y escribe en otros dos. Al terminar sabrás mandar cada uno a donde quieras.

⏱ 25–35 min▶ Video de 89 s🧪 Laboratorio con 4 misiones
00 · En 89 segundos

Primero, la idea completa

Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.

    01 · A mano o en un archivo

    Terminal y shell

    Hay dos formas de trabajar con Linux desde la línea de comandos: a mano, escribiendo órdenes en una terminal, y automatizada, escribiendo una serie de órdenes en un archivo, un script, que la shell ejecuta por ti.

    • La terminal es el programa que da la interfaz de texto: lee lo que tecleas y muestra texto en pantalla, incluidos caracteres de escape para colores o mover el cursor. Antes era un aparato dedicado; hoy casi siempre es un emulador de terminal. Cuál usas lo dice la variable TERM o la orden infocmp.
    • La shell es el programa que corre dentro de la terminal y hace de intérprete: ejecuta órdenes, maneja variables y los canales de entrada y salida, y permite automatizar con scripts. La Bourne shell (sh) es el intérprete estándar, una shell POSIX; Bash (Bourne Again Shell) nació para reemplazarla y es la más usada. Cuál estás usando lo dice $SHELL o $0.
    02 · Entra uno, salen dos

    Los tres streams

    Cada proceso que lanza la shell tiene tres descriptores de archivo (file descriptors, FD) para entrada y salida:

    • stdin (FD 0), la entrada: por defecto, el teclado.
    • stdout (FD 1), la salida normal: por defecto, la pantalla.
    • stderr (FD 2), los errores: también la pantalla, pero por un canal aparte.

    Como son canales distintos, se pueden mandar a lugares distintos. Eso es una redirección:

    <toma stdin de un archivo
    > o 1>manda stdout a un archivo, reemplazando lo que tenía
    >>manda stdout al final de un archivo, sin borrar lo anterior
    2>manda stderr a un archivo
    &>manda stdout y stderr juntos; muy a menudo a /dev/null, para descartarlos
    Escena 1

    ls /home /root produce una salida y un error a la vez. Elige una redirección y mira a dónde va cada canal.

    03 · Programas que se pasan datos

    Tuberías y caracteres especiales

    La tubería | conecta el stdout de un proceso con el stdin del siguiente, así los datos pasan de un programa a otro sin guardarse en ningún archivo. Otros dos caracteres especiales:

    • & al final de una orden la ejecuta en segundo plano, y la shell queda libre.
    • \ al final de una línea continúa la orden en la línea siguiente.
    Escena 2

    ¿Qué errores aparecen en el registro de la aplicación y cuántas veces? Agrega etapas a la tubería y mira qué sale de cada una.

    04 · ¿Salió bien?

    El código de salida

    Al terminar, toda orden devuelve un código de salida (exit status), haya salido bien o mal. Es un número de 0 a 255: 0 significa que todo salió bien y cualquier otro valor indica un problema. El de la última orden se consulta con echo $?.

    La shell lo usa para encadenar órdenes: con && la segunda corre solo si la primera salió bien, y con || solo si falló.

    Escena 3

    Elige una orden y mira qué código deja en $? y qué parte de la cadena llega a correr.

    05 · Lo de todos los días

    Archivos, registros y fechas

    • Archivos: > sobrescribe y >> agrega al final. sed hace sustituciones (por ejemplo sed 's/pan/PAN/g' ventas.txt) y diff muestra las diferencias entre dos archivos.
    • Registros: suelen tener muchas líneas. less (o bat) los muestra por páginas, head da las primeras líneas, tail las últimas y tail -f se queda mostrando lo nuevo que se va agregando.
    • Fechas: date da la fecha actual y acepta muchos formatos, como date +%F (2026-11-02). Por dentro se usa el tiempo Unix: los segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 UTC, contando todos los días como de exactamente 86 400 segundos (date +%s). Es común nombrar archivos con la fecha, por ejemplo respaldo-$(date +%F).tar.
    06 · Predice

    Antes de leer la respuesta

    Laboratorio

    Tu turno: dirige los streams

    Una terminal con la usuaria ana. Guarda salidas en archivos sin perder lo anterior, silencia los errores de una búsqueda, cuenta los errores de un registro con una tubería y comprueba con $? cuándo algo falló. El panel muestra a dónde fue cada canal en tu última orden.

    Repaso

    Comprueba lo que entendiste

    Cada respuesta incorrecta explica por qué parece correcta y en qué falla.