Saltar al contenido
Volver al catálogo
Proyecto shellSistemasIntermedioPróximamente

Construye tu propio shell

Construye un shell POSIX desde cero. Usa fork, exec, tuberías y redirecciones para escribir un intérprete de comandos que ejecute programas reales.

Constrúyelo en tu lenguaje

El tester trata tu programa como una caja negra: sirve cualquier lenguaje. Estos son los más cómodos para este proyecto.

Idioma del temario

Las guías de las etapas se leen en este idioma. Solo aparecen los idiomas en los que este proyecto ya está traducido completo; el idioma de la interfaz no cambia.

De qué trata este proyecto

Proyecto en preparación: estamos completando y verificando el recorrido de implementación y sus pruebas. Las capacidades descritas son el objetivo del proyecto; todavía no está habilitado para comenzar.

Un shell es el programa con el que hablas con tu sistema operativo todos los días: lee una línea, decide qué significa y pone al kernel a trabajar. Por dentro es sorprendentemente pequeño, y entenderlo cambia para siempre cómo lees un error de terminal.

En este reto construyes el tuyo: un intérprete que lanza procesos reales, encadena comandos con tuberías, redirige entrada y salida y devuelve códigos de salida correctos. Al final podrás ejecutar ls | grep .txt > salida.txt en un shell escrito por ti.

Hoja de ruta

12 etapas repartidas en 4 fases. Cada etapa trae su guía y sus tests: avanzas cuando pasan.

  1. Fase 13 etapas

    El bucle mínimo

    Lee una línea, ejecuta un binario y espera a que termine. Tu primer proceso hijo.

  2. Fase 23 etapas

    Comandos internos y PATH

    cd, pwd y exit, búsqueda en el PATH y códigos de salida correctos.

  3. Fase 34 etapas

    Tuberías y redirecciones

    Conecta procesos con pipe, redirige ficheros con dup2 y encadena varios comandos.

  4. Fase 42 etapas

    Señales y segundo plano

    Ctrl-C que no te mata, trabajos en background y limpieza de zombis.

Antes de empezar

Un intérprete de comandos interactivo compatible con lo esencial de POSIX: prompt, parseo de la línea, comandos internos (cd, exit, pwd), ejecución de binarios buscándolos en el PATH, tuberías encadenadas, redirecciones de entrada y salida, y gestión de procesos en primer y segundo plano.

  • container-runtime
    Próximamente

    Construye tu propio runtime de contenedores

    Construye un runtime de contenedores desde cero. Aísla procesos con namespaces, cgroups y chroot para entender cómo Docker inicia una imagen.

    Experto8 etapas~16 hSistemas
    namespacescgroupsprocesos

    Go · C · Rust

  • garbage-collector
    Próximamente

    Construye tu propio recolector de basura

    Construye un recolector de basura desde cero. Implementa marcado y barrido, rastrea objetos vivos y recupera memoria como los runtimes que usas a diario.

    Experto9 etapas~18 hSistemas
    memoriamarcado y barridopunteros

    C · C++ · Rust

  • neural-network
    Beta

    Construye tu propia red neuronal

    Construye una red neuronal desde cero. Implementa propagación hacia adelante, funciones de pérdida y descenso de gradiente, y entrena tu propio modelo.

    Principiante6 etapas~6 hSistemas
    aprendizaje automáticoredes neuronalesmatemáticas+1

    Python · TypeScript