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 :

Question sur redirection > et pipe


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Par défaut Question sur redirection > et pipe
    Bonjour,

    Pour comprendre :

    > va rediriger la sortie standard de la commande sur la gauche du signe > vers le fichier présenté par le paramètre à droite du signe >.

    | va rediriger la sortie de la commande à sa gauche vers l'entrée de la commande à sa droite.

    Que se passe t'il dans ce cas ?

    En testant la commande, le fichier est bien crée mais le cat ne donne pas de résultat.
    En théorie en lisant la commande de gauche à droite la sortie de ls est envoyée vers file.txt qui devrait être ensuit être renvoyé vers l'entrée de cat. Comment réagit l’interpréteur dans ce cas ? En apparence, comme la sortie de ls est déjà redirigée, il n'y a pas de redirection vers l'entrée de cat. Est-ce cela ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Bonjour chrtophe
    Citation Envoyé par chrtophe Voir le message
    Bonjour,

    En testant la commande, le fichier est bien crée mais le cat ne donne pas de résultat.
    En théorie en lisant la commande de gauche à droite la sortie de ls est envoyée vers file.txt qui devrait être ensuit être renvoyé vers l'entrée de cat. Comment réagit l’interpréteur dans ce cas ? En apparence, comme la sortie de ls est déjà redirigée, il n'y a pas de redirection vers l'entrée de cat. Est-ce cela ?
    Oui , C'est le résultat de la commande "ls *.txt>file.txt" qui est envoyé vers l'entrée de "cat"
    en l’occurrence le résultat est "nul" ici (Quand toto va bene)

    Un little exemple est mieux qu'un grand discours : (Avec génération d'une erreur redirigée vers la sortie std (2>&1) qui de fait , deviendra l'entrée du "cat")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls *.txt *.yen_a_pas 2>&1 > liste_des_fichiers.txt |cat > le_resultat_de_la_commande_ls
    Resultat :
    le fichier : liste_des_fichiers.txt contient la liste des fichiers "*.txt"
    et le fichier : le_resultat_de_la_commande_ls contient

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour,

    le pipe est pour éviter les fichiers temporaires dans des opérations comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ command1 >/tmp/montmp
    $ command2 /tmp/montmp
    $ rm -f /tmp/montmp
    On préfèrera:
    Ce qui montre qu'il faut indiquer le moment où le fichier temporaire putatif doit être utilisé. Par défaut, c'est en fin de commande.

    Exemple:
    La commande suivante va filtrer les motifs (écrits dans le fichier du même nom) dans le fichier transmis par le pipe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo -e "toto\ntiti" |grep -f motifs
    alors que la commande suivante va filtrer les motifs transmis par le pipe dans un fichier cible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo -e "toto\ntiti" |grep -f - cible
    En effet, le tiret indique qu'on utilise le pipe.

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Par défaut
    Merci pour vos réponses. argoet, j'avoue que j'ai du mal à suivre. Je me demande l'algo utilisé par le shell pour analyser cela.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Ben c'est simple: c'est la dernière opération exécutée.

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Par défaut
    Ben c'est simple: c'est la dernière opération exécutée.
    Dans le cadre d'un pipe, les opérations sont exécutés en //. Je présumes qu'il faut donc lire la commande de gauche à droite ...
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur redirection MX
    Par Fredo67 dans le forum Exchange Server
    Réponses: 0
    Dernier message: 05/11/2009, 12h35
  2. Question sur les redirections
    Par the_greg dans le forum Référencement
    Réponses: 2
    Dernier message: 14/01/2009, 12h11
  3. [URL Rewriting] Question sur le .htaccess (Redirect)
    Par vdumont dans le forum Apache
    Réponses: 3
    Dernier message: 26/12/2007, 12h48
  4. Réponses: 2
    Dernier message: 24/10/2006, 22h12
  5. [struts] Questions sur Redirection formulaire
    Par SrK dans le forum Struts 1
    Réponses: 12
    Dernier message: 10/05/2006, 16h30

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