# 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. ```