Skip to content

Commit f992492

Browse files
Francois PetitFrancois Petit
authored andcommitted
update readme
1 parent acc6863 commit f992492

2 files changed

Lines changed: 23 additions & 40 deletions

File tree

README.md

Lines changed: 23 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,25 @@
11
# MiniShell
22

3-
Règles à respecter pour le shell :
4-
1. Affichage et commandes de base :
5-
• Afficher une invite lorsqu’il attend une nouvelle commande.
6-
• Avoir un historique fonctionnel.
7-
2. Recherche et exécution des commandes :
8-
• Rechercher et lancer le bon exécutable :
9-
• En fonction de la variable PATH.
10-
• Ou en utilisant un chemin relatif ou absolu.
11-
3. Gestion des caractères spéciaux et des citations :
12-
• Ne pas interpréter :
13-
• Les guillemets non fermés.
14-
• Les caractères spéciaux qui ne sont pas requis (ex. \ ou ;).
15-
• Gérer les guillemets simples (') : empêcher l’interprétation des métacaractères dans la séquence entre guillemets.
16-
• Gérer les guillemets doubles (") : empêcher l’interprétation des métacaractères sauf pour $.
17-
5. Redirections :
18-
• < : Rediriger l’entrée.
19-
• > : Rediriger la sortie.
20-
• << :
21-
• Accepter un délimiteur.
22-
• Lire l’entrée jusqu’à rencontrer une ligne contenant ce délimiteur.
23-
• Note : Cela ne doit pas mettre à jour l’historique.
24-
• >> : Rediriger la sortie en mode ajout (append).
25-
5. Gestion des pipes :
26-
• Gérer les pipes (|) :
27-
• La sortie de chaque commande doit être connectée à l’entrée de la commande suivante.
28-
6. Gestion des variables et du statut d'exécution :
29-
• Gérer les variables d’environnement ($ suivi d’une séquence de caractères) et les développer en leurs valeurs.
30-
• Gérer ? pour qu’il se développe en le statut de sortie du dernier pipeline exécuté en premier plan.
31-
7. Gestion des raccourcis clavier :
32-
• ctrl-C : Afficher une nouvelle invite sur une nouvelle ligne (en mode interactif).
33-
• ctrl-D : Quitter le shell.
34-
• ctrl-\ : Ne rien faire (en mode interactif).
35-
8. Commandes internes à implémenter :
36-
• echo avec l’option -n.
37-
• cd avec un chemin relatif ou absolu uniquement.
38-
• pwd sans options.
39-
• export sans options.
40-
• unset sans options.
41-
• env sans options ni arguments.
42-
• exit sans options.
3+
## Rules
4+
5+
This projects aims at replicating a very basic shell with :
6+
- basic interactive display with history
7+
- interpretation and execution of commands (with name or absolute path)
8+
- interpretation of variables
9+
- interpretation of wildcard `*` for the current directory
10+
- handling of single and double quotes
11+
- handling of redirections and heredoc (`<`, `<<`, `>>`, `>`)
12+
- handling of pipes
13+
- handling of execution status
14+
- handling of EOF and signals SIGINT, SIGQUIT
15+
16+
A few builtin commands with no options were also implemented :
17+
- `cd`
18+
- `pwd`
19+
- `export`
20+
- `unset`
21+
- `env`
22+
`echo` with option n was also implemeted.
23+
24+
25+
![overview](minishell.png)

minishell.png

1.21 MB
Loading

0 commit comments

Comments
 (0)