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

C Discussion :

Ecriture d'un shell : gestion des motifs (caractère joker)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    agh
    agh est déconnecté
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Par défaut Ecriture d'un shell : gestion des motifs (caractère joker)
    Bonjour à tous,

    Je dois pour l'école écrire un "petit shell" sous Linux.
    Tout ce que j'ai fait marche jusqu'à présent, y'a pas de soucis.

    Là où je commence à bloquer, c'est sur la gestion des motifs (du caractère joker '*').

    Par exemple, si je fais :

    Il va me répondre que le fichier '*.c' n'existe pas.
    normal...

    Ma question est donc assez simple : comment pourrais-je gérer ça ?
    J'avoue n'avoir pas trop d'idées...

    je vous remercie beaucoup.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 42
    Par défaut
    fais ls *c
    a+;

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par agh Voir le message
    Ma question est donc assez simple : comment pourrais-je gérer ça ?
    J'avoue n'avoir pas trop d'idées...
    Pour ça, je dirai qu'il faut que ton shell est une notion de de qu'il a en face de lui : fichiers, répertoires...

    Posix -puisse que tu es sous linux- contient ce qu'il te faut : opendir, readdir... le tout est rangé dans dirent.h.

    http://www.opengroup.org/onlinepubs/...h/readdir.html

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    L'autre solution est d'inclure un moteur d'expressions régulières dans ton shell, de façon à ce qu'il puisse vérifier la concordance d'un paramètre "nom de fichier" (avec jokers éventuels) et le nom réel d'un fichier/répertoire sur le filesystem...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Ca tombre bien que tu sois sous Linux, voici un tutoriel assez sympa pour débuter dans la programmation d'un interpréteur de commandes: http://ftp.traduc.org/doc-vf/gazette...1/lg111-G.html
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par agh Voir le message
    Ma question est donc assez simple : comment pourrais-je gérer ça ?
    J'avoue n'avoir pas trop d'idées...
    Faut utiliser les regex. T'as un tas de routines qui pourront t'indiquer si une chaine classique "abc" matche une expression joker.
    Donc pour ton "ls *.c", tu balayes l'ensemble des fichiers du répertoire et tu regardes si le nom balayé matche le nom demandé.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    pourquoi faire compliqué ??

    par exemple dans le cas de "ls *.c"

    commande = ls
    paamètre = *.c

    extension => indiquée par le point
    * = tous les fichiers

    opendir
    readdir
    d->name

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    pourquoi faire compliqué ??

    par exemple dans le cas de "ls *.c"

    commande = ls
    paamètre = *.c

    extension => indiquée par le point
    * = tous les fichiers
    Ouaip, dans ce cas là ok. Mais s'il veut un shell qui sache reconnaitre "[aeiou]*x*[0-9]*.c", ce sera une autre paire de manches...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Ou même simplement un truc du genre "ls file*num???.*", commande acceptée par n'importe quel shell sur n'importe quelle machine (DOS, Windows, Unix, ...).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ouaip, dans ce cas là ok. Mais s'il veut un shell qui sache reconnaitre "[aeiou]*x*[0-9]*.c", ce sera une autre paire de manches...
    Ou même encore, les expressions contenant des slashes, telles que :

    $ ls -l /proc/*/fd/*

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Ou même encore, les expressions contenant des slashes, telles que :

    $ ls -l /proc/*/fd/*
    pour ce genre de truc, utiliser un regex ne solutionnera pas beaucoup plus ..

    Il te faudra de toutes façons une espèce d'analyseur syntaxique pour stocker les numéros hiérarchiques de sous-répertoires...



    Citation Envoyé par Sve@r Voir le message
    Ouaip, dans ce cas là ok. Mais s'il veut un shell qui sache reconnaitre "[aeiou]*x*[0-9]*.c", ce sera une autre paire de manches...
    Citation Envoyé par Mac LAK Voir le message
    Ou même simplement un truc du genre "ls file*num???.*", commande acceptée par n'importe quel shell sur n'importe quelle machine (DOS, Windows, Unix, ...).

    Ce que je veux dire, c'est qu'à mon avis il est mieux pour l'esprit et l'éducation, pédagogiquement, d'utiliser sa tête et de sortir un algo réel, même faiblement performant mais correct algorithmiquement, et, ensuite, dans une phase d'optimisation, d'utiliser un outil qui remplace une partie d'opération de manière plus efficace..


    Là ce que je vois poindre (et beaucoup de posts ici ou sur le forum algo en sont les témoins) est une incopréhension globale du problème, une impossibilité à formuler correctement le problème ou sa solution, l'utilisation d'outils devenant pré-établi par rapport à la compréhesnion de ce que ça fait réellement...

    Combien de posts vois-je sur le forum Algo ou des gens disent "Comment utiliser cette commande MatLab ?" et, quand on leur pose une question "j'y connais rien en maths, j'en suis resté aux maths du lycée et encore".....


    Je pense que ce n'est ni leur rendre servce, ni nous (en tant que société) nous rendre service...

Discussions similaires

  1. créer un shell : gestion des chemins
    Par boboss123 dans le forum C
    Réponses: 0
    Dernier message: 29/03/2011, 10h19
  2. Réponses: 1
    Dernier message: 17/10/2006, 04h39
  3. Gestion des caractères spéciaux
    Par claralavraie dans le forum Oracle
    Réponses: 1
    Dernier message: 22/06/2006, 14h41
  4. [VBS]Gestion des chaînes de caractères
    Par Edoxituz dans le forum VBScript
    Réponses: 11
    Dernier message: 29/01/2006, 17h07
  5. Gestion des chaînes de caractères
    Par Furius dans le forum VBScript
    Réponses: 5
    Dernier message: 06/01/2006, 15h01

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