42sh (Tek 1)
La 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 :
|
|
ex: $ls "who|'" '"'"slt\"" | |
| ex: $echo {a*[^c],b??.*[a-z]}/b*.{c,h} | ||
| ex: $sleep 100 & | ||
| ex: $kill -9 `ps ax | grep netscape | awk '{print $1}'` | ||
| ex: $(cut -d\ -f2 .note | tr '\n' +;echo 0)| bc -l | ||
| ex: $set a=val;echo $a;ls $a;$a | ||
| ex: term, precmd, cwdcmd, cwd, ignoreof ... | ||
| ex : $history - avec ! et modificateur / $!ls / $!12 / $!-4 / $!ls:s/.c/.h + linkage avec l’édition de ligne | ||
|
||
-
10 ans de réussite
-
Une pédagogie innovante
-
Le cursus
-
Les programmes
-
Zoom sur des modules différents
-
Les infrastructures
-
Epitech en France
-
EPITECH dans le monde
- Edito
- Au coeur d'un monde qui bouge
- Etre expert en informatique
- Préparer les métiers de demain
- Après EPITECH
- Le groupe IONIS
- Le cursus
- 1er cycle - Bachelor en 3 ans
- 2ème cycle - Expertise en 2 ans
- La double formation Epitech-ISG
- Rentrée de mars
- La V.A.E.
- La formation permanente
- La culture Projet
- 1re année - Fondamentaux
- 2e année - Consolidation
- 3e année - Maîtrise
- 4e année - Internationalisation
- 5e année - Expertise








