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 :

Commande read pour "Appuyez sur une touche pour continuer"


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut Commande read pour "Appuyez sur une touche pour continuer"
    J'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read -p "Appuez sur une touche pour continuer... " -n 1 -s
    ...qui ne fonctionne pas (-n illegal option). Plus que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read -p "Appuez sur une touche pour continuer... "
    En effet, read --help me donne ces options mais le man me renvoie à une méthode C (unistd.h) !?

    Merci par avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Bonjour.

    Si la question est "comment obtenir le man de read", il faut savoir que c'est une commande built-in du shell, donc spécifique à chaque shell.

    Donc: "man sh" ou "man ksh" ou "man bash" ou autre...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut
    En effet, c'était une des questions, merci jack-ft.
    renvoie :
    --Man-- prochain : read(2) [ voir (entrée) ...etc ]
    Puis me renvoie sur cette fonction C.
    1. Pourquoi ?
    2. Comment faire pour mon "Press any key..." ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par ticNFA Voir le message
    En effet, c'était une des questions, merci jack-ft.
    renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --Man-- prochain : read(2) [ voir (entrée) ...etc ]
    Puis me renvoie sur cette fonction C.
    1. Pourquoi ?
    Je pense que c'est un peu comme si tu faisais "man bash; man read"

    Pour avoir le man du "read" de "bash", par exemple, il faut juste taper man bash, puis:
    - soit scroller très loin et chercher avec le yeux l'item "read",
    - soit le chercher avec "/read" (suivi de RETURN) puis taper 165 fois la lettre 'n' (mais ça dépend de la version de bash et de la largeur de l'écran...),
    - soit le chercher directement avec "/read \[" (espace, backslash, crochet, suivis de RETURN)

    2. Comment faire pour mon "Press any key..." ?
    Je ne sais pas...
    mais peut-être pourrais-tu nous dire quel shell tu utilises?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut
    Oui, je n'ai pas été assez clair. Avec j'arrive bien à read, en quittant puis [entrée], mais c'est toujours la fonction C.

    De plus, quand je tape la commande, hors script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    read
    read -p "Message." (-n1 -s)
    Cela fonctionne.

    Pardon, j'avais oublié de mentionné qu'il s'agit de Bash (v4.1.5) sous Debian.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par ticNFA Voir le message
    Oui, je n'ai pas été assez clair. Avec j'arrive bien à read, en quittant puis [entrée], mais c'est toujours la fonction C.
    Oui. Tu lances 2 man. Le premier 'man bash' te permet de voir la commande intégrée 'read' du bash, puis, quand tu quittes, tu arrives sur le 2ème man qui te montre le man de la fonction C 'read'. Normal!

    De plus, quand je tape la commande, hors script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    read
    read -p "Message." (-n1 -s)
    Cela fonctionne.

    Pardon, j'avais oublié de mentionné qu'il s'agit de Bash (v4.1.5) sous Debian.
    Hors script, tu es en bash. Quel est le shebang de ton script?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut
    Ok pour le man, merci.
    Citation Envoyé par jack-ft Voir le message
    Quel est le shebang de ton script?
    Bash aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $SHELL
    /bin/bash

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut,

    Le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    read -p "Press any key: "
    fonctionne très bien dans un script bash ou dans un shell. Que fait ton script exactement?

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Mygale1978 Voir le message
    Salut,

    Le read -p "Press any key: " fonctionne très bien dans un script bash ou dans un shell.
    fonctionne très bien, fonctionne très bien!
    Comme vous y allez, mon ami!
    Il se contente faire ce pour quoi il est fait...
    c'est-à-dire attendre n'importe quelle séquence (même vide) de caractères terminée par RETURN.

    En conséquence de quoi, il ne répond pas tout à fait à la question:
    "comment faire une attente d'un caractère quelconque (éventuellement différent de return)?"

    Je propose donc le contournement simple et efficace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read -p "Press return to continue: "
    faute de mieux, j'avoue humblement...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re,

    Citation Envoyé par jack-ft Voir le message
    fonctionne très bien, fonctionne très bien!
    Comme vous y allez, mon ami!
    Il se contente faire ce pour quoi il est fait...
    c'est-à-dire attendre n'importe quelle séquence (même vide) de caractères terminée par RETURN.

    En conséquence de quoi, il ne répond pas tout à fait à la question:
    "comment faire une attente d'un caractère quelconque (éventuellement différent de return)?"
    désolé j'ai oublié d'ajouter les options "-n 1 -s"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    cat read.bsh
     
    read -p "Press any key: " -n1 -s
     
    $ sh read.bsh
    read.bsh: 3: read: Illegal option -n
     
    $ bash  read.bsh
    Press any key:
    A mon avis le script est executé avec un autre shell que bash.

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Mygale1978 Voir le message
    désolé j'ai oublié d'ajouter les options "-n 1 -s"
    Ben justement, il dit que ces options ne marchent pas chez lui !?!

    @ticNFA: Peux-tu essayer la proposition de Mygale1978:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    cat > read.bsh <<EOF
    #!/bin/bash
    read -p "Press any key: " -n1 -s
    EOF
     
    ./read.bsh
     
    bash  read.bsh

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2007
    Messages : 156
    Points : 540
    Points
    540
    Par défaut
    J'avais essayé toutes les formes, avec ou sans option, avec ou sans variable. J'avais ces différentes erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    read: XXX: arg count
    n: illegal option
    s: illegal option
    Quelque chose m'a échappé, j'avais lu qu'il fallait terminer le message avec une ponctuation et/ou un espace. Mon message était alors "Press any key to continue... ". J'ai changé le message, ": " à la fin, et... cela a fonctionné. Mais j'ai enlevé la ponctuation et l'espace à la fin du message. Cela marche aussi.
    'comprends pas.

    Par contre, j'ai appris quelque chose, merci Mygale, avec l'extension .bsh au lieu de .sh pour du bash.

    Merci à vous et désolé pour ce dérangement.

    J'ai mis Résolu même si je ne comprends toujours pas pourquoi me renvoie ers une fonction C.

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

Discussions similaires

  1. Dos create process "Appuyer sur une touche pour continuer"
    Par inspecteur rick dans le forum Débuter
    Réponses: 2
    Dernier message: 31/12/2009, 12h23
  2. Réponses: 3
    Dernier message: 26/08/2009, 11h44
  3. appuyez sur une touche pour continuer
    Par ProgVal dans le forum Débuter
    Réponses: 2
    Dernier message: 12/03/2008, 16h38
  4. Réponses: 12
    Dernier message: 25/08/2006, 13h44
  5. Réponses: 15
    Dernier message: 28/01/2005, 04h46

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