Skip to content

Abensett/9.-Minishell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shell

9-MINISHELL

Table of contents

GOAL

L’objectif de ce projet est de créer un shell minimaliste en C.

Requirements

  • Afficher un prompt en l’attente d’une nouvelle commande.
  • Posséder un historique fonctionnel
  • Chercher et lancer le bon exécutable (en se basant sur la variable d’environnement PATH, ou sur un chemin relatif ou absolu).
  • Une variable globale max
  • Ne pas interpréter de quotes (guillemets) non fermés, \ (le backslash) ou ; (le point-virgule).
  • Gérer ’ (single quote) qui doit empêcher le shell d’interpréter les méta-caractères présents dans la séquence entre guillemets.
  • Gérer " (double quote) qui doit empêcher le shell d’interpréter les méta-caractères présents dans la séquence entre guillemets sauf le $ (signe dollar)
  • Redirections :
    • < doit rediriger l’entrée.
    • > doit rediriger la sortie.
    • << doit recevoir un délimiteur et lire l’input donné jusqu’à rencontrer une ligne contenant le délimiteur. Cependant, l’historique n’a pas à être mis à jour !
    • >> doit rediriger la sortie en mode append
  • Pipes | . La sortie de chaque commande de la pipeline est connectée à l’entrée de la commande suivante grâce à un pipe
  • Gérer les variables d’environnement (un $ suivi d’une séquence de caractères) qui doivent être substituées par leur contenu.
  • Gérer $? qui doit être substitué par le statut de sortie de la dernière pipeline exécutée au premier plan.
  • Gérer ctrl-C, ctrl-D et ctrl-\ qui doivent fonctionner comme dans bash.
  • En mode interactif :
    • Ctrl + C => nouveau prompt.
    • Ctrl + D => quitte le shell.
    • Ctrl + \ => ne fait rien.
  • Builts-ins :
    • echo avec l'option - n
    • cd no option
    • pwd no option
    • export no option
    • env no option or argument
    • exit no option

Ressources

RFC

Parsing

Execution

Heredoc


42 Project 101/100

About

The goal of this new project is to create a simple shell (just like a small bash), which will help you apprehended processes and file descriptors.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published