# MINISHELL (!)
## Correction
#### create .env
- [ ] Utilisez "make -n" to pour vous assurer que le projet compile avec
"-Wall -Wextra -Werror". Si ce n'est pas le cas, cochez le flag
"invalid compilation".
- [ ] Le minishell compile sans aucune erreur. Si ce n'est pas le cas,
cochez le flag.
- [ ] Le Makefile ne doit pas re-link. Si ce n'est pas le cas, cochez le
flag.
Yes
No
Commande simple et variables globales
- [ ] Exécutez une commande simple avec un PATH absolu tel que /bin/ls
ou n'importe quelle autre commande sans option.
- [ ] Combien de variables globales y a-t-il ? Pourquoi ? Demandez à la
personne évaluée de vous donner un exemple concret pour démontrer que
leur usage est obligatoire et cohérent.
- [ ] Testez une commande vide
- [ ] Test ez seulement des espaces et des tabs.
- [ ] En cas de crash, cochez le flag "crash".
- [ ] Si quelque chose ne marche pas, cochez le flag "incomplete work".
Yes
No
#####Arguments et historique
- [ ] Exécutez une commande simple avec un PATH absolu tel que /bin/ls
ou n'importe quelle autre commande, avec option mais sans ''
(single quotes) ni "" (double quotes).
- [ ] Répétez ce test plusieurs fois avec différentes commandes et
différents arguments.
- [ ] En cas de crash, cochez le flag
- [ ] Si quelque chose ne marche pas, cochez le flag "incomplete work".
Yes
No
#####echo
- [ ] Lancez la commande echo avec et sans argument ou options, ou avec
l'option -n.
- [ ] Répétez ce test plusieurs fois avec différents arguments.
- [ ] En cas de crash, cochez le flag "crash".
- [ ] Si quelque chose ne marche pas, cochez le flag "incomplete work".
Yes
No
#####exit
- [ ] Lancez la commande exit avec et sans arguments.
- [ ] Répétez ce test plusieurs fois avec différents arguments.
- [ ] N'oubliez pas de relancer le minishell.
- [ ] En cas de crash, cochez le flag "crash".
- [ ] Si quelque chose ne marche pas, cochez le flag "incomplete work"
Yes
No
##### valeur de retour
- [ ] Exécutez des commandes simple avec un chemin absolu tel que /bin/ls
ou n'importe quelle autre commande avec des arguments mais sans ''
(single quotes) ni "" (double quotes), puis lancez "echo $?".
Vérifiez la valeur affichée. Vous pouvez le refaire dans bash et
comparer.
- [ ] Répétez ce test plusieurs fois avec différentes commandes et
différents arguments.
- [ ] Utilisez des commandes qui ne fonctionnent pas telles que '/bin/ls
fichiernul'.
- [ ] Essayez des expressions telles que $? + $?
- [ ] En cas de crash, cochez le flag "crash".
- [ ] Si quelque chose ne marche pas, cochez le flag "incomplete work"
Yes
No
#####signaux
- [ ] ctrl-C dans un prompt vide devrait afficher une nouvelle ligne avec un
nouveau prompt.
- [ ] ctrl-\ dans un prompt vide ne devrait rien faire.
- [ ] ctrl-D dans un prompt vide devrait quitter minishell. Ensuite,
relancez-le.
- [ ] ctrl-C dans un prompt après avoir écrit des choses devrait afficher une
nouvelle ligne avec un nouveau prompt.
- [ ] Également, le buffer devrait être vide. Appuyez sur "Entrée" afin de vous
assurer que la ligne précédente a été exécutée.
- [ ] ctrl-D dans un prompt après avoir écrit des choses ne devrait rien faire.
- [ ] ctrl-\ dans un prompt après avoir écrit des choses ne devrait rien faire.
- [ ] Essayez ctrl-C après avoir lancé une commande bloquante, comme cat ou grep
sans argument.
- [ ] Essayez ctrl-\ après avoir lancé une commande bloquante, comme cat ou grep
sans argument.
- [ ] Essayez ctrl-D après avoir lancé une commande bloquante, comme cat ou grep
sans argument.
- [ ] Répétez plusieurs fois en utilisant des commandes différentes.
- [ ] En cas de crash, cochez le flag "crash".
- [ ] Si quelque chose ne marche pas, cochez le flag "incomplete work"
Yes
No
#####double quotes
- [ ] Exécutez une commande simple avec des arguments, mais cette fois
utilisez des guillemets (rajoutez des ';' et des espaces entre les
guillemets).
- [ ] Essayez une commande comme : echo "cat lol.c | cat > lol.c"
- [ ] N'essayez pas $
- [ ] En cas de crash, cochez le flag "crash"
- [ ] Si quelque chose ne marche pas, cochez le flag "incomplete work".
Yes
No
#####single quotes
- [ ] Exécutez des commandes avec des single quotes dans les arguments.
- [ ] Essayez des arguments vides
- [ ] Faites des tests avec des variables d'environnement, des espaces, des
pipes, des redirections entre les guillemets
- [ ] echo '$USER' doit afficher "$USER"
- [ ] Rien ne devrait être interprété.
Yes
No
#####env
- [ ] Vérifiez qu'env vous affiche bien les variables d'environnement.
Yes
No
#####export
- [ ] Exportez des variables d'environnement, dont certaines pour
remplacer les anciennes.
- [ ] Vérifiez le résultat avec env.
Yes
No
#####unset
- [ ] Exportez des variables d'environnement, dont certaines pour
remplacer les anciennes
- [ ] Utilisez unset pour en retirer
- [ ] Vérifiez le résultat avec env.
Yes
No
#####cd
- [ ] Utilisez la commande cd pour vous déplacer dans l'arborescence et
utilisez /bin/ls pour vérifier que vous êtes dans le bon répertoire.
- [ ] Répétez ce test plusieurs fois avec des cd qui fonctionnent et qui
ne fonctionnent pas
- [ ] Essayez aussi '.' et '..' en arguments.
Yes
No
#####pwd
- [ ] Utilisez la commande pwd, avec et sans argument.
- [ ] Répétez ce test plusieurs fois dans différents répertoires.
- [ ] Essayez '.' et '..' en arguments.
Yes
No
#####chemin relatif
- [ ] Exécutez des commandes en utilisant un chemin relatif
- [ ] Répétez ce test plusieurs fois dans d'autres dossier avec un chemin
relatif complexe (beaucoup de ..).
Yes
No
#####PATH d'environnement
- [ ] Exécutez des commandes mais sans PATH (ls, wc, awk, etc...).
- [ ] Retirez le $PATH et vérifiez si les commandes ne fonctionnent plus.
- [ ] Mettez plusieurs répertoires à PATH (directory1:directory2) et vérifiez
qu'ils sont bien évalués de gauche à droite.
Yes
No
#####redirection
- [ ] Exécutez des commandes avec les redirections < et/ou >
- [ ] Répétez ce test plusieurs fois avec différentes commandes et différents
arguments et, quelques fois, utilisez >> au lieu de >.
- [ ] Vérifiez si plusieurs instances de la même redirection échouent.
- [ ] Testez les redirections avec << (cela ne doit pas forcément mettre à
jour l'historique).
Yes
No
#####pipes
- [ ] Exécutez des commandes avec des pipes telles que 'cat file | grep bla | more'
- [ ] Répétez plusieurs fois avec différentes commandes et différents arguments.
- [ ] Essayez des commandes qui échouent telles que 'ls fichiernul | grep bla | more'
- [ ] Mixez les pipes et les redirections.
Yes
No
#####Soyons fous ! Et l'historique
- [ ] Entrez une commande, puis ctrl-C, et appuyez sur "Entrée".
Le buffer devrait être vide et il ne devrait plus rien avoir à
exécuter.
- [ ] Peut-on naviguer dans l'historique avec Haut et Bas (profitez-en
pour relancer des commandes) ?
- [ ] Exécutez des commandes qui ne fonctionnent pas telles que 'dskdskdksd'
et vérifiez que tout fonctionne comme prévu.
- [ ] 'cat | cat | ls' doit fonctionner.
- [ ] Essayez des commandes vraiment, vraiment longues avec des tonnes d'arguments.
- [ ] Amusez-vous avec ce superbe minishell et profitez-en.
Yes
No
#####Variables d'environnement
- [ ] Exécutez echo avec des variables d'environnement ($variable) en argument.
- [ ] Assurez-vous que $ est interprété correctement.
- [ ] Vérifiez que les guillemets autour des $variables fonctionnent
correctement (comme dans bash).
- [ ] Si USER n'existe pas, définissez-la
- [ ] Ainsi, echo "$USER" devrait afficher la valeur de $USER.
```