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 :

Que veut dire " > /dev/null" ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Par défaut Que veut dire " > /dev/null" ?
    bonjour à tous,

    ca veut dire quoi cette expression:

    " > /dev/null "
    le ">" pour dire quoi et "/dev/null" ca signifie quoi?

    merci bien

  2. #2
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Bonjour,

    le ">" veux dire redirection de la sortie standard
    et le /dev/null c'est un fichier qui sert grosomodo de poubelle.

    donc l'expresion "> /dev/null" envoie la sortie standard dans /dev/null en d'autre terme suprime la sortie standard.

    Cordialement.

  3. #3
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Par défaut
    Salut,

    signifie envoyer le résultat de ce qui précéde vers
    peut être considéré comme un trou noir. C'est à dire une poubelle sans trace.

    signifie donc envoyer le résultat de ce qui précéde (souvent des messages de status de résultat) dans le trou noir (poubelle) du système.
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Par défaut
    merci bien pour vous

    c claire ce que vous dites mais dans ce contexte je la comprends pas:

    en fait pour tester si un parametre est numerique ou non il met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (`expr $1 + 1` > /dev/null); then 
    echo "numerique"


    merci bcp

  5. #5
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Par défaut
    Salut,

    fait l'addition de $1 et 1 et retourne le résultat.
    Donc on envoie le résultat à /dev/null (afin de ne pas polluer l'affichage).
    Si l'addition s'est correctement passée (sans message d'erreur) on affiche le mot "numerique" à l'écran.
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par thouraya24 Voir le message
    merci bien pour vous

    c claire ce que vous dites mais dans ce contexte je la comprends pas:

    en fait pour tester si un parametre est numerique ou non il met

    if (`expr $1 + 1` > /dev/null); then
    echo "numerique"



    merci bcp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    The expr utility exits with one of the following values:
         0       the expression is neither an empty string nor 0.
         1       the expression is an empty string or 0.
         2       the expression is invalid.
    donc si $1 vaut -1 cela donnera un résultat erroné…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/bin/sh
     
    if test $1 -eq $1 &> /dev/null
    then
        echo "numerique"
    fi

  7. #7
    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,

    Si l'on veut être précis, il est nécessaire d'expliquer deux choses, au moins:

    • La plupart des commandes ont une sortie "texte", visible par l'utilisateur. Par exemple: ls toto va me donner 'toto' si le fichier existe, sinon 'ls: toto: No such file or directory' (en anglais chez moi).
    • Mais les commandes ont aussi une valeur de retour, invisible, qui dit comment s'est déroulé la commande: 0 --> tout va bien, 1 --> erreur...

    Dans un script, on teste les valeurs de retour sans mettre de crochet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ls toto; then echo "toto existe"; else echo "toto n'existe pas"; fi
    Il est à remarquer que si toto existe, alors ls renverra 0 et le if l'interprétera comme true. Étrange n'est-ce pas? Et toute valeur non-nulle (une commande renvoyant une erreur) sera interprétée comme false.
    Mais il n'est pas très joli de voir s'afficher les résultats intermédiaires: dans notre cas, si toto n'existe pas, il sera affiché 'ls: toto: No such file or directory' puis 'toto n'existe pas'. Pour éviter cela, on supprime les sorties standard (mais juste pour la commande) de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ls toto &> /dev/null; then echo "toto existe"; else echo "toto n'existe pas"; fi
    PS: pour vérifier qu'une variable est numérique en Bash, on fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [[ $var =~ [[:digit:]]+ ]]; then echo "numérique"; else echo "non numérique"; fi

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Par défaut
    merci beaucoup

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par thouraya24 Voir le message
    merci beaucoup
    faites quand même attention au test avec l'expression [:digit:] :
    telle qu'écrite elle teste si la variable contient des digits…
    pas qu'elle ne contienne QUE des digits et éventuellement commence par + ou - …

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ^[+|-]{0,1}[[:digit:]]+$
    est une regex plus correcte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #!/bin/sh
     
    if [[ $# -lt 2 ]]; then
        echo "Usage: $0 PATTERN STRINGS..."
        exit 1
    fi
    regex=$1
    shift
    echo "regex: $regex"
    echo
     
    while [[ $1 ]]
    do
        if [[ $1 =~ $regex ]]; then
            echo "$1 matches"
            i=1
            n=${#BASH_REMATCH[*]}
            while [[ $i -lt $n ]]
            do
                echo "  capture[$i]: ${BASH_REMATCH[$i]}"
                let i++
            done
        else
            echo "$1 does not match"
        fi
        shift
    done
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ./testregex "^[+|-]{0,1}[[:digit:]]+$" +112 -10 10 0 a1 1a ---1 +-1 -+1 
    regex: ^[+|-]{0,1}[[:digit:]]+$
     
    +112 matches
    -10 matches
    10 matches
    0 matches
    a1 does not match
    1a does not match
    ---1 does not match
    +-1 does not match
    -+1 does not match

  10. #10
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Bonsoir,
    Citation Envoyé par JeitEmgie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ^[+|-]{0,1}[[:digit:]]+$
    Une petite erreur : le ou n'a pas besoin d'être utilisé entre crochets, mais entre parenthèses.
    Il provoque même une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ./testregex "^[+|-]{0,1}[[:digit:]]+$" +112 '|15'
    regex: ^[+|-]{0,1}[[:digit:]]+$
    
    +112 matches
    |15 matches
    Il faudrait plutôt utiliser

  11. #11
    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
    Heu... nous étions partis sur la signification de > /dev/null avec en question subsidiaire la manière de détecter qu'une variable est numérique... ou pas. Et nous voilà à utiliser le tableau BASH_REMATCH... sans explication. D'ailleurs, quel est l'intérêt des sous-expressions parenthésées dans la détection des digits?

Discussions similaires

  1. [AS] Que veut dire AND
    Par jbidou88 dans le forum Flash
    Réponses: 2
    Dernier message: 31/05/2006, 11h21
  2. que veut dire (nrow >= 6) && (~nrow&0x01)
    Par gronaze dans le forum C
    Réponses: 12
    Dernier message: 24/03/2006, 15h00
  3. [WD9] Que veut dire AGL?
    Par afrikha dans le forum WinDev
    Réponses: 4
    Dernier message: 24/10/2005, 11h15
  4. Que veut dire ce symbole?
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/06/2005, 22h25
  5. Que veut dire "volatile" devant une variable ?
    Par altahir007 dans le forum C
    Réponses: 4
    Dernier message: 23/06/2004, 15h47

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