IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Creer un mini shell


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 75
    Par défaut Creer un mini shell
    Bonjour,
    ma demande sera bizarre, si je recevrai un message qui dit c'est quoi cette ce demande je n'aurai pas de problème; mais voila j'ai un projet a rendre le moi 12 dans le cours de système, le projet est de créer un mini shell dont programmer "presque" tous les commandes de shell(ne pas utiliser le mot exec dans le programme" on utilisant langage C!tout simplement je sais pas d'où commencer, si vous avez des propositions pour la conception, la méthode a suivre, la logique a suivre ...seront vraiment les bienvenue...merci par avance

  2. #2
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    Je crois que le mieux est de faire man bash pour te rendre compte de ce que fait un shell. Ne prends pas peur malgré les dizaines de pages à lire. Tu remarqueras que les commandes comme sed, awk, diff, host, ls... ne font pas partie du shell et sont donc appelées comme des programmes externes: system(...). Par contre le shell gère:
    • les variables,
    • le prompt,
    • les redirections (>, >>, <<, <<-, &>, 1>...),
    • les expansions (~, ${var#pattern}, $(cmd), *...),
    • les commandes de programmations (if, for, select, while, until...)
    • ...
    Mais avant tout, le shell est un interpréteur: il doit couper la commande en "mots", lancer les programmes et leur fournir les arguments, récupérer les valeurs de retour et les passer au programme suivant (dans le cas d'un pipe). Je crois que c'est là-dessus qu'il faut insister. Il y aura donc des appels system(...), mais c'est après que le travail devient intéressant... Bon courage!

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Quand j'étais en école d'ingé j'ai eu un mini shell à programmer. Ce qu'on nous demandait était très limité : exécution de commandes en premier plan et en background (avec &), redirections (<, >, >&), pipe (|), et built-in "cd" pour changer de répertoire. Avec ça tu as un shell minimal, mais complètement utilisable.

    Après si tu veux ajouter les construction du genre if, for, ... C'est une autre histoire.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 75
    Par défaut
    bonjour,
    merci a vous, j'ai commencé a voir le chemin, le probléme c'est que je savais pas que il existe la programmation séparée et surtout le makefile!

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Par défaut
    Citation Envoyé par midotek Voir le message
    bonjour,
    merci a vous, j'ai commencé a voir le chemin, le probléme c'est que je savais pas que il existe la programmation séparée et surtout le makefile!
    J'ai peut-être raté un concept de programmation, mais je crois que tu te trompes. On parle de compilation séparée et de programmation modulaire.

  6. #6
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    Citation Envoyé par jmelyn Voir le message
    Il y aura donc des appels system(...), mais c'est après que le travail devient intéressant... Bon courage!
    Bonjour,

    dans ce genre d'exercice, en général on n'utilise pas la fonction system(). Trop simple.

    S'il y a par exemple une commande cd, il faut la programmer en C.

    Donc pour moi les étapes de ce mini shell:
    1) définir la syntaxe
    2) voir si lexx et yacc sont utilisable (dépend du temps pour le projet)
    3) faire un analyseur syntaxique de ce mini shell
    4) écrire un interpréteur
    5) développer 1 à 1 les primitives du shell: cd, for, ls .... etc

    Bon courage.

    PS: En combien de temps ce projet ?

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Pour le cd il n'y a rien de compiqué, c'est la fonction chdir().

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 53
    Par défaut
    Oupa.
    Le code du builtin cd est étrangement plus long qu'un simple chdir.

  9. #9
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Citation Envoyé par arcanis Voir le message
    Le code du builtin cd est étrangement plus long qu'un simple chdir.
    Si tu as le code de cd, tu dois voir ce qu'il fait non ? Qu'est-ce qui te pose probleme exactement ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  10. #10
    Invité de passage
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Par défaut cd
    Bonsoir,

    je suis peutetre tres en retard mais voila , je dois realiser grosso-modo le meme projet que celui dont il est question , et je bute sur une partie , je ne sais pas faire le built de cd , si quelqu'un peut m'aider , merci d'avance

    Cordialement,

Discussions similaires

  1. programmer un mini shell!
    Par nixmind dans le forum C
    Réponses: 36
    Dernier message: 21/11/2010, 18h05
  2. Creer une commande Shell a partir d'un fichier
    Par oldscrout dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 21/12/2007, 16h04
  3. Créer un mini-shell dans une application
    Par neuro6 dans le forum C++
    Réponses: 6
    Dernier message: 01/11/2007, 11h59
  4. Ecrire mini Shell
    Par lia20 dans le forum Linux
    Réponses: 1
    Dernier message: 14/05/2007, 10h06
  5. Mini shell !!!!!
    Par asoka13 dans le forum C++
    Réponses: 6
    Dernier message: 28/12/2005, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo