Minishell
42sh · Projet système · C · Epitech
Un shell Unix développé en C dans le cadre du projet 42sh à Epitech. Il reproduit les principales fonctionnalités de tcsh.
mahir@epitech: ~/projects/42sh — 42sh
➜ ~/projects/42sh ./42sh 42sh$ ls | grep .c main.c parser.c exec.c builtins.c env.c 42sh$ echo $USER lance $0 mahir lance ./42sh 42sh$ history | tail -2 1 make 2 ./42sh 42sh$
Le projet
À Epitech, j’ai travaillé sur 42sh, un interpréteur de commandes Unix écrit en C. Le projet couvre l’analyse des commandes et l’exécution des processus.
J’y ai travaillé la gestion mémoire, fork/execvp, les descripteurs de fichiers et les signaux.
Ce qu'il gère
- pipes
- La sortie d’une commande devient l’entrée de la suivante (cmd1 | cmd2).
- redirections
- Redirection des entrées et sorties (>, >>, <, <<).
- env
- Gestion des variables d'environnement : setenv, unsetenv, expansion de $VAR.
- history
- Consultation de l’historique et réexécution des commandes.
- globbing
- Expansion des motifs de fichiers (*, ?, [...]) avant exécution.
- builtins
- Commandes intégrées, dont cd, echo, exit et env.
- separators
- Enchaînement de commandes avec ; et des opérateurs logiques.
Démo
42sh.mp4 : démonstration
Installation
bash
# Cloner, compiler, lancer $ git clone git@github.com:EpitechPromo2028/B-PSU-200-42sh.git $ cd 42sh && make $ ./42sh
Commandes
- cd [dir]
- Change de répertoire courant
- setenv VAR=value
- Définit une variable d'environnement
- unsetenv VAR
- Supprime une variable d'environnement
- cmd1 | cmd2
- Redirige la sortie de cmd1 vers cmd2
- cmd1 ; cmd2
- Exécute cmd1 puis cmd2
- history
- Affiche l'historique des commandes