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