ecole informatique
L'école  >  Le cursus  >  La culture Projet  >  Tek1 - 42sh

42sh (Tek 1)

Shell type BashLa vie, l'univers et le reste... surtout le reste.

But du projet : Réalisation d’un Shell de type bash.

Description du projet

42sh fait partie des trois projets les plus importants que doivent rendre les étudiants en fin de première année.
Après trois mini-projets (minishell 1 à 3) faisant appel aux notions à maîtriser pour réaliser celui-ci, les étudiants sont prêts à travailler par groupe de 4 à 6 personnes sur ce projet qui, étant l'aboutissement d'un an de travail, est d'une grande importance dans la décision du passage en deuxième année.

Le projet consiste en l'écriture d'un Shell du niveau de bash, tcsh et autres. Il se décompose en deux parties :

  • Une partie obligatoire qui représente 40 % de la note du projet).
  • Une partie optionnelle qui ne peut être faite que si la partie obligatoire fonctionne complètement.

La stabilité et l'utilisation de l'ensemble est largement prise en compte.

Aspect technique

La partie obligatoire

Elle comprend les parties suivantes :

  • Une acquisition de ligne minimale :
    • affichage d'un prompt plus ou moins élaboré
    • récupération de la ligne tapée
  • Exécution des commandes avec leurs paramètres : (ex: $ls -l / )
    • gestion correcte des espaces et des tabulations
    • gestion du PATH (qui n'est pas forcément de système de cash)
    • gestion des erreurs et valeurs de retour
  • les redirections :
    • ex: $> /tmp/z -l
    • < > >>
    • les pipes
  • builtins:
    • cd (avec cd seul et cd -)
    • echo
    • exit
  • les séparateurs:
    • ;
    • &&
    • ||

ex: $cd /tmp;ls -l > /tmp/xx < /dev/null |echo * ;sleep 100& who;ls || who && pwd ; echo test

La partie optionnelle

C'est là que les groupes gagnent la majorité des points. Le choix des options est libre, mais la cohérence de l'ensemble est prise en compte. De même que pour la partie obligatoire la stabilité est beaucoup plus importante que la quantité. Une option supplémentaire ne doit pas nuire à l'ensemble, surtout à la partie obligatoire, afin de préserver l'ergonomie.
Liste d'options souhaitables :

  • les inhibiteurs (" ' \ ).
  • ex: $ls "who|'" '"'"slt\""
  • le globing * ? [ ] { }
  • ex: $echo {a*[^c],b??.*[a-z]}/b*.{c,h}
  • le background
  • ex: $sleep 100 &
  • les `
  • ex: $kill -9 `ps ax | grep netscape | awk '{print $1}'`
  • les ()
  • ex: $(cut -d\ -f2 .note | tr '\n' +;echo 0)| bc -l
  • les variables (locales et d'environ).
  • ex: $set a=val;echo $a;ls $a;$a
  • variables spéciales
  • ex: term, precmd, cwdcmd, cwd, ignoreof ...
  • history
  • ex : $history - avec ! et modificateur / $!ls / $!12 / $!-4 / $!ls:s/.c/.h + linkage avec l’édition de ligne
  • alias
  • édition de ligne:
    • multi ligne
    • avec rebinding dynamique
    • complétion dynamique (fichier, commande, contextuel ....)
  • job control (très apprécié)
  • scripting (très long).
  •  

    EPITECH en France

    EPITECH en France

    Témoignage

    Au départ un projet, aujourd'hui mon entreprise

    photo de CAMILLE MIREY "Un des éléments déclencheurs fut la possibilité de consacrer entièrement le stage de 3ème année au développement du projet."
    CAMILLE MIREY
    ancien
    Promotion 2007

    D'abord MMORPG (jeu de rôle en ligne), en 2003, puis moteur de jeu pour mondes persistants en 2004, et enfin middleware destiné à la production d'univers immersifs en 2006, le projet HellHeaven a accompagné tout notre cursus depuis la fin de la 1ère année. Il a d'abord évolué au gré des opportunités (projet libre de 2ème année, objectif de projet de fin d'études dès la 3ème année) et de l'équipe (jusqu'à 9 personnes) puis s'est progressivement orienté vers des besoins professionnels réels : la fibre entrepreneuriale commençait à s'exprimer.

    Un des éléments déclencheurs fut la possibilité de consacrer entièrement le stage de 3ème année au développement du projet. Une chance inespérée et un argument décisif pour fonder, dès janvier 2005, Persistant Studios SARL qui regroupe quatre associés.

    En 2006, une première prestation pour une société d'architecture nous donne une vision plus large des problématiques réelles de production. Une refonte complète du moteur est entamée cette même année afin de proposer une solution flexible pour la création d'applications 3D temps réel.

    Une étape importante dans la consolidation de l'activité fut franchie avant même la fin de notre cursus, avec l'arrivée de Persistant Studios à la tête du laboratoire de développement de jeux vidéo. Une manière agréable et efficace de faire profiter les étudiants de notre expérience. L'activité de Persistant Studios, encore scindée en 2 parties (prestations d'un côté, R&D de l'autre) commence à se structurer et HellHeaven arrive à maturité.