Giter Club home page Giter Club logo

9.-minishell's Introduction

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

9.-minishell's People

Contributors

abensett avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.