#### General ###### Was the project written in a compiled programming language? ###### Are the commands mentioned in the subject implemented from scratch, without calling any external binaries and exclusively using low-level system calls directly, without relying on built-in functions or libraries that abstract file operations? #### Functional ##### Open a terminal and run the project. ###### Can you confirm that the project runs and displays a unix shell? ##### Open a terminal and run the project. ###### Can you confirm that this interpreter displays at least a simple `$` and waits for you to type a command? ##### Try to run a command of your choice. ###### Can you confirm that the interpreter only validates the command if you press enter? ##### Try to run the command `"exit"`. ###### Can you confirm that the interpreter terminates properly and gives back the parent's shell? ##### Try to run the command `"echo "something!""`. Do the same in your computer terminal. ###### Can you confirm that the displayed message of the project is exactly the same as the computer terminal? ##### Try to run the command `"echo something else"` (without double quotes). Do the same in your computer terminal. ###### Can you confirm that the displayed message of the project is exactly the same as the computer terminal? ##### Try to run the command `"pwd"`. ###### Can you confirm that the interpreter displayed the current path? ##### Try to open the project and create a parent folder with two children folders using the command "mkdir". Then enter the parent folder and do "pwd". ###### Can you confirm that the interpreter displayed the current path? ##### Try to enter a directory of your choice by using the command `"cd dir/of/your/choice"`. ###### Can you confirm that the interpreter took you to the correct path? Use `"pwd"` to confirm. ##### Try to run only the command `"cd"`. ###### Can you confirm that the interpreter took you to the users home folder? Use `"pwd"` to confirm. ##### Try to run the command `"ls"` in a directory at your choice. Do the same in your computer terminal. ###### Can you confirm that the output is the same in the project and in your computer terminal? ##### Try to run the command `"ls -l -a -F"` in a directory at your choice. Do the same in your computer terminal. ###### Can you confirm that the output is the same in the project and in your computer terminal? ##### Try to run the commands `"mkdir new_folder1"` and `"mkdir new_folder2"` in a directory of your choice. ###### Can you confirm that the directory `new_folder1` and `new_folder2` were created? ##### Create a document inside the `new_folder1` called `new_doc.txt` with some random text inside. Try to run the command `"cp new_doc.txt ../folder2"` to copy the document to the folder `new_folder2`. ###### Can you confirm that the document `new_doc.txt` is inside the `new_folder2`? ##### Try to run the command `"cat new_folder1/new_doc"`. Do the same in your computer terminal. ###### Can you confirm that the output is the same in the project and in your computer terminal? ##### Try to run the commands `"mv new_folder2 new_folder1"` to move the directory `new_folder2` inside of the directory `new_folder1`. ###### Can you confirm that the directory `new_folder2` is inside of the directory `new_folder1`? ##### Try to run the command `"rm -r new_folder1"` to remove what was created above. ###### Can you confirm that the directory `new_folder1` was removed? #### Bonus ###### +Did the student added auto complete when you are writting the commands? ###### +Did the student added piping? ###### +Did the student managed the `Ctrl + C`? ###### +Did the student added colors to the errors or directories? ###### +Did the student added redirection? ###### +Did the student added the current path behind the `$`? ###### +Did the student added any other features or commands to the project?