commande shell
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

commande shell



  1. #1
    narakphysics

    commande shell


    ------

    bonjour à tous
    Dans mon répertoire courant il a une répertoire qui s'appelle rep, je désire copier dans rep les fichiers de /usr/include dont le nom commence par std puis créer un fichier allincludes.h qui contenant toutes les lignes des fichier du répertoire rep où apparaît la chaîne include.
    voilà ma réponse:
    Code:
    #! /bin/bash
    cd ~
    mkdir rep
    cp `grep std* /udr/include` rep/
    cd rep
    for var in *
    do  
    cat $var|grep include > allincludes.h
    done
    est ce juste??
    merci d'avance

    -----

  2. #2
    ProgVal

    Re : commande shell

    Bonjour,

    À mon avis, la meilleure méthode pour savoir si le code est « juste », c'est de le tester.

    D'autre part, en mettant /usr/include au lieu de /udr/include, ça a plus de chances de marcher.

    ProgVal

  3. #3
    narakphysics

    Re : commande shell

    merci pour votre réponse
    le code ça marche pas!!
    je sais pas où est l'erreur

  4. #4
    invite4492c379

    Re : commande shell

    Hello,

    comme te l'a suggéré Progval essaye ton source ligne par ligne.
    sinon :

    * grep est un outil de recherche dans des fichiers ...
    * find est un outil pour rechercher des fichiers
    * ls marche pas mal non plus

    * simplement utiliser cp pour copier des fichiers ?????
    * ouvrir un ` nécessite aussi un ` fermant.
    * que se passe-t-il si rep existe déjà ?

  5. A voir en vidéo sur Futura
  6. #5
    narakphysics

    Re : commande shell

    merci Fred pour votre réponse
    la commande grep ça marche pas, car elle concerne que le contenu d'un fichier!
    j'ai corrigé mon code:
    Code:
    #! /bin/bash
    mkdir rep
    cp `find  /usr/include -maxdepth 1 -name std*` rep/
    cd rep
    for var in *
    do
    cat $var|grep include > allincludes.h
    done
    ça marche bien maintenant
    sans -maxdepth, le code va copier aussi les fichiers des sous dossier de /usr/include,
    si "rep" existe déja, le terminale m'affiche une erreur que le répertoire rep/ existe déjà

  7. #6
    invite4492c379

    Re : commande shell

    Cool,
    sinon pour lister les fichiers de seulement un répertoire tu peux utiliser ls : ls /usr/include/std*
    mais find est réellement plus puissant.

    pour le répertoire il y a plusieurs solutions :

    * mkdir -p rep ne te renverra pas d'erreur si le répertoire existe déjà
    utile aussi pour créer rapidement un chemin, par exemple si tu veux créer a/b/c/d tu peux le faire en un coup avec mkdir -p a/b/c/d
    => man mkdir
    * tester si le répertoire existe avant d'essayer de le créer avec un if [ -d rep ]
    => man test
    s'il existe tu peux l'effacer avec tout son contenu pour éviter une erreur lors cp, ou utiliser un cp -f ...

    mais bon s'il ne s'agit qu'un petit exo pas la peine de sortir la grosse artillerie.

  8. #7
    narakphysics

    Re : commande shell

    merci M Fred pour votre explication

  9. #8
    polo974

    Re : commande shell

    dans le genre plus simple:
    Code:
    cd ~
    rm -rf rep
    mkdir -p rep
    cp /usr/include/std* rep
    grep -h include rep/std* >rep/allincludes.h
    En plus on ne change pas de dossier...
    Jusqu'ici tout va bien...

Discussions similaires

  1. commande shell unix
    Par invite11eb4860 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 30/07/2011, 12h42
  2. [Shell] Commandes
    Par invited66ae163 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 08/03/2011, 23h12
  3. script shell
    Par invite97b21456 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 22/12/2010, 14h22
  4. Shell Model
    Par Solitonique dans le forum Physique
    Réponses: 0
    Dernier message: 20/08/2003, 22h00