Skip to content

SamyB2/Shell-Command-Execution

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projet de C - Jérémy MOOTOOVEEREN et Sami BELMELLAT

🧐 Qu'avons nous fait ?

Dans le cadre de notre projet de C, nous avons réalisé une simulation d'un terminal Unix avec les commandes principalements utilisés tel que CD, LS, MKDIR, RM et d'autres. L'idée était de réaliser une simulation à l'aide de structure de Noeud représentant les fichiers ou les dossiers d'une arborescence afin de pouvoir y naviguer et effectuer les principales tâches qu'un utilisateur d'Unix pourrait realisé. Nous avons déjà pris soin d'efféctuer quelques tests de notre coté , certains sont relatifs à la syntaxe du code écrit tandis que d'autres sont plus orientés commandes Shell !

🛠️ Installation et Compilation du projet

Pour Compiler notre projet , Executez la commande :

 make Main

Cette dernière va générer un exécutable de nom : Main , à qui vous pourrez fourir le nom de(s) fichier(s) à exécuter , vous pouvez les mettre dans le Dossier Tests.

Pour nettoyer le Dossier du projet , Executez la commande :

make clean

🧑💻 MakeFile

L'idée du MakeFile était de pouvoir réaliser correctement et rapidement la compilation des éléments nécéssaires aux projets.

Avec le compilateur GCC, la commande que nous utilisons pour compiler correctement et sans problème nos fichiers .c est :

gcc -Wall -o fichier fichier.c

Celle-ci nous assure une compilation qui détecte la moindre erreur logique ou de compilation afin de ne laisser aucun bug à la trappe.

Le MakeFile crée des variables qui stockes les informations importantes comme le nom du compilateur, les chemins relatifs, etc:

CC=gcc
CFLAGS=-Wall
INCLUDE=include
SRC=src
OBJ=obj
DEPSCOMMANDES=$(INCLUDE)/commandes.h $(INCLUDE)/arborescence.h $(INCLUDE)/traitement.h
DEPSPARSING=$(INCLUDE)/parsing.h $(INCLUDE)/commandes.h $(INCLUDE)/traitement.h

Les lignes de commandes réalisés dans le MakeFile ressemble à cela :

$(OBJ)/traitement.o: $(SRC)/traitement.c $(INCLUDE)/traitement.h
	$(CC) $(CFLAGS) -c $<
	mv ./traitement.o obj/

$(OBJ)/arborescence.o: $(SRC)/arborescence.c $(INCLUDE)/arborescence.h $(INCLUDE)/traitement.h	
	$(CC) $(CFLAGS) -c $<
	mv arborescence.o obj/

On utilise les variables définies plus haut pour réalisé toutes les commandes sur tout les fichiers sans avoir à écrire n fois la commande

🛠️ Arborescense

Image

About

Here we implement a virtual file system with the base commands required as cd, pwd, mv...

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published