Makefile: Το makefile μεταγλωτίζει όλα τα πηγαία αρχεία του φακέλου Sources και φτιάχνει τα αντικείμενά τους στον φάκελο Objects, όπου από κει συνδέοντε και δημιουργείτε το εκτελέσιμο mysh.txt στον τρέχον φάκελο. Μεταγλώτιση και εκτέλεση: Με την εντολή make μεταγλωτίζοντε τα αρχεία, και με την εντολή ./mysh τρέχει το εκτελέσιμο in-mysh-now: Είναι ο φάκελος που ξεκινάει το shell μας και περιέχει διάφορα αρχεία για testing header αρχεία: Το αρχείο headers.h περιέχει όλες τις απαραίτητες βιβλιοθήκες που απαιτεί το shell μας, και γίνεται include σε όλα τα πηγαία αρχεία Το αρχείο function_headers.h περιέχει τις απαραίτητες κλάσεις του shell μας, αλλά και τα ορίσματα με τα σχόλια για επεξήγηση των συναρτήσεων του κελύφους μας. Γίνεται include από την headers.h Οι κλάσεις που χρησιμοποιεί το κέλυφός μας είναι η Process και η Files Τα πηγαία αρχεία είναι τα ακόλουθα: aliases.cpp, όπου περιέχει συναρτήσεις που αφορούν το θέμα με τα ψευδόνημα αλλά και του μονοπατιού child.cpp, όπου περιέχει συναρτήσεις που αφορούνε την εκτέλεση των γραμμών των εντολών file_class.cpp, όπου περιέχει τις υλοποιήσεις των συναρτήσεων της κλάσης Files functions.cpp, είναι ένα αρχείο που περιέχει πιο γενικές συναρτήσεις του στυλ μετατροπές από ένα τύπο δεδομένου σε κάποιο άλλο, διαχωρισμό λέξεων από κενά και ειδικούς χαρακτήρες κλπ history.cpp, περιέχει τη συνάρτηση που αφορά το ιστορικό του κελύφους mysh.cpp, περιέχει τη main συνάρτηση του προγράμματος η οποία καλέι συναρτήσεις parser.cpp, περιέχει τον parser του κελύφους μας process_class.cpp, όπου περιέχει τις υλοποιήσεις των συναρτήσεων της κλάσης Process wildcharacters.cpp, περιέχει τις υλοποιήσεις που αφορούν τους wildcharacters με χρήση της glob Όσον αφορά το τι κάνει το κέλυφός μας, ακολουθεί κατά προσέγγιση τους κανόνες του bash. Εκτελεί όσα προγράμματα θέλουμε σε μία γραμμή, με την παραδοχή να υπάρχει ο χαρατκήτρας ; ανάμεσά τους. Έχει τη δυνατότητα να εκτελεί απλά προγράμματα με και χωρίς ορίσματα, με και χωρίς ανακατεθύνσεις και pipes. Ο χαρακτήρας ; χωρίζει την εντολή σε 2 εντολές. Αυτή που υπήρχε πριν το ερωτηματικό, και αυτή που υπάρχει μετά. (Η λέξη άπειρα θα αφορά τον πολύ μεγάλο αριθμό που μας δίνει δυνατότητα το υλικό μας) Όσον αφορά τις ανακατεθύνσεις, μπορεί να εκτελέσει με άπειρα output αρχεία και με μονή και με διπλή ανακατεθυνση, με τα ενδιάμεσα να δημιουργούντε και στο τελευταίο να γράφει όπως ακριβώς και στο bash, ενώ input αρχείο το κέλυφός μας δέχεται μόνο 1. Όσον αφορά τα pipes, το κέλυφός μας τα υποστιρίζει, υποστιρίζει ακόμα προγράμματα μαζί με τα ορίσματά τους και pipe, ακόμα και pipes σε συνδιασμό με ανακατεθύνσεις, αλλά δεν υποστιρίζει multipipes δλδ εντολή τύπου ... | ... | ... |. Το κέλυφός μας σε κάθε εκτέλεση μπορεί να υποστιρίζει μόνο ένα pipe. Υπάρχει κανονικά η εκτέλεση background processes. Όταν ένα πρόγραμμα έχει το χαρακτήρα & στο τέλος των ορισμάτων του, το κέλυφός το εκτελεί στο background. Υπορσιρίζει wildcharacters όπως ακριβώς και το bash. Υπορσιρίζει και aliases. Για δημιουργεία alias: createalias "..." και για καταστροφή: destroyalias "..." Υποστιρίζει σήματα cntrl-c και cntrl-z. Το κέλυφος αγνωεί το σήμα και το περνάει στις διεργασίες παιδιά αν τα παιδιά δεν είναι διεργασίες background. Οι background διεργασίες δεν επιρεάζοντε από τα σήματα Υπάρχει και το ιστορικό το οποίο με την εντολή history μας δίνει τις μέχρι 20 τελευταίες εκτελέσεις, και με την εντολή history i, i από 0 μέχρι 19 εκτελούμε την iοστή εντολή χωρίς να περιλαμβμάνοντε οι εντολές history σε αυτές τις εκτελέσεις.