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.
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.
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
TERMo la ordeninfocmp. - 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$SHELLo$0.
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 |
ls /home /root produce una salida y un error a la vez. Elige una redirección y mira a dónde va cada canal.
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.
¿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.
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ó.
Elige una orden y mira qué código deja en $? y qué parte de la cadena llega a correr.
Archivos, registros y fechas
- Archivos:
>sobrescribe y>>agrega al final.sedhace sustituciones (por ejemplosed 's/pan/PAN/g' ventas.txt) ydiffmuestra las diferencias entre dos archivos. - Registros: suelen tener muchas líneas.
less(obat) los muestra por páginas,headda las primeras líneas,taillas últimas ytail -fse queda mostrando lo nuevo que se va agregando. - Fechas:
dateda la fecha actual y acepta muchos formatos, comodate +%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 ejemplorespaldo-$(date +%F).tar.
Antes de leer la respuesta
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.
Comprueba lo que entendiste
Cada respuesta incorrecta explica por qué parece correcta y en qué falla.