- Commandes de base
- Support de commandes intégrées comme
cd,pwd,clear,kill,ftype,for,if,history - Exécution de commande externe commandes externes.
- Support de commandes intégrées comme
- Redirection d'entrée et de sortie
- Redirection des flux d'entrée et de sortie avec
>,>>,<,2>,<<,2>>,>|,2>|
- Redirection des flux d'entrée et de sortie avec
- Pipelines
- Exécution de commandes connectées par des pipelines (par ex.
command1 | command2).
- Exécution de commandes connectées par des pipelines (par ex.
- Gestion des processus
- Commandes pour gérer les processus en cours (
kill).
- Commandes pour gérer les processus en cours (
- Scripts personnalisés (Demander)
- Support d'interprétation pour des boucles ou conditions simples (
for,if).
- Support d'interprétation pour des boucles ou conditions simples (
- Gestion des erreurs
- Gestion des erreurs via
perroret affichage des messages directement dans le terminal viawrite.
- Gestion des erreurs via
- Complétion automatique
- appuyer sur
tabaffiche les commande créer (voir 1. Commandes de base) - et si vous avez déjà taper une commande avant sur votre prompte sa affiche les fichier disponible dans le repertoire courant
- appuyer sur
- Non utilisation de fonction d’ordre supérieur
- Nous avons qu’utiliser des fonction n’utilisant que un appelle système, sauf dans certain cas comme l’affiche des erreur, la création de chaîne de caractère, ou la gestion du prompte de basse
- Commande non fini
- Dans le dossier
commande non finiil y a 7 commande non terminer, aveccompgen,fg,read,set,source,unset,jobs
- Dans le dossier
- Commande bonus
- Nous avons implémenté en plus les commande:
forkbomb: qui génère un fork bombechos; (pour echo scintillant) qui affiche le message donner avec des étoiles
- Nous avons implémenté en plus les commande:
-
cd <path>: Change le répertoire courant (pour aller dans le répertoirenom composéalors vous devez tapercd nom\ composé) -
pwd: Affiche le répertoire courant. -
clear: Nettoie le terminal. -
history: Affiche l'historique des commandes lancé -
exit <int>: quitte le terminal avec la valeur de retour0ou<int>(ou ctrl + d). -
kill <pid> <signal>: envoie au processus<pid>le signal<signal> -
ftype <ref>: affiche le type du fichier de référence<ref> -
for F in <rep> [-A] [-r] [-e EXT] [-t TYPE] [-p MAX] { CMD }: Sans option, exécute la commande structuréeCMDpour chaque (référence de) fichier non caché du répertoire<rep>.CMDpeut dépendre de la valeur de la variable de boucleF, désignée par$F.Effet des options :
A: étend la portée de la boucle aux fichiers cachés (sauf.et..);r: parcours récursif de toute l'arborescence de racineREP;e EXT: filtrage des résultats selon l'extension : les fichiers dont le nom de base ne se termine pas par.EXTsont ignorés; pour les autres fichiers, la variable de boucleFprend pour valeur la référence du fichier amputée de son extension.t TYPE: filtrage des résultats selon le type de fichier :fpour les fichiers ordinaires,dpour les répertoires,lpour les liens symboliques,ppour les tubes;p MAX: permet le traitement en parallèle d'un maximum deMAXtours de boucle.
-
if TEST { CMD_1 } else { CMD_2 }: exécute le pipelineTESTpuis, selon sa valeur de retour, exécute l'une ou l'autre des commandes structurées entre accolades. (elsen’est pas obligatoire) -
echos <msg>: Affiche<msg>avec des étoiles -
forkbomb: Affiche l'historique des commandes lancé -
history: Affiche l'historique des commandes lancé
forkbomb.c: code pour générer un fork bomb (ne pas exécuter sans précautions).echos.c: Implémentation de la commandeecho.if.c: Support pour exécuter des conditions dans le terminal.cd.c: Implémentation de la commandecd.clear.c: Implémentation de la commandeclear.ftype.c: Détecte et affiche le type d'un fichier donné.executable.c: Gère l'exécution de commandes externes.main.c: Point d'entrée principal pour l'exécution du terminal.pipeline.c: Gère les pipelines entre plusieurs commandes.redirection.c: Implémente les redirections d'entrée et de sortie.pwd.c: Implémente la commandepwd.kill.c: Implémente la commandekill.for.c: Permet des boucles simples au sein du terminal.Makefile: Automatisation de la compilation et de l'exécution du projet.AUTHORS.md: Liste des contributeurs au projet.
-
Prérequis
- Un compilateur C, comme
gcc. - Un environnement Linux/Unix.
- Un compilateur C, comme
-
Cloner Utilisez la commande suivante pour cloner le projet :
git clone https://github.com/RayanVSS/FSH.git
-
Déplacez vous
cd terminal -
Compilation Utilisez la commande suivante pour compiler le projet :
make all
-
Exécution Lancez le terminal avec :
./fsh
Ce projet a été réalisé par les auteurs suivants, étudiants en informatique :
- Belhassen Rayan - 22215583 - @belhasse
- Bencheikh Ilias - 22202353 - @bencheik
- Lounici Sifaks - 22214651 - @lounici
Le fichier AUTHORS.md contient une description détaillée des contributions.
- Ajout/terminer de nouvelles commandes.
- Optimisation des performances.
- Implémentation des Alias