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 :

Format du prompt avec la commande read


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    Juin 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 42
    Par défaut Format du prompt avec la commande read
    dans la discussion : Commande read pour "Apuyez sur une touche pour continuer"
    Citation Envoyé par jack-ft Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    read -p "Press any key: " -n1 -s
    Youpi ! ça marche très bien cette instruction :-)

    Mais moi je voudrais ajouter des saut de ligne avant / après, et mettre le message en couleur !!

    Le man de read me dit d’arrêter de perdre mon temps et de plutôt aller cueillir des haricots.

    Il n’empêche que mes tentatives de ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    read -p "/n \033[01;32m Press any key: /n " -n1 -s
    ... ne fonctionnent pas !
    Des avis ?
    s'il vous plais

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    ce n'est pas le bon man.
    man read détaille le fonctionnement de la commande read POSIX
    il faut lire le man de l'interpréteur bash.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read -p $'\n\033[01;32m bla bla\n: '
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    Juin 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 42
    Par défaut
    Youhou ! Merci pour la réponse rapide et merci aussi pour le tuyau "man bash"

    Citation Envoyé par N_BaH Voir le message
    man read détaille le fonctionnement de la commande read POSIX
    il faut lire le man de l'interpréteur bash.
    Par contre, le "man bash" il doit faire environs 1000 pages, donc merci de l'avoir lu pour moi !
    Mais je retiens l'info.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    Juin 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 42
    Par défaut
    ...mhhh
    Désolé, mais je commence à vouloir tout automatiser :'-( et je n'en ai pas les compétences :''-(
    du coup ma ligne de commande à cette tête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read -p $'\n                     \033[5;1;43;32m Press \033[5;1;46;37m any \033[5;1;45;32m key:  \033[0m \n \n' -n1 -s ;
    (oui bon ok, je me suis un peu amusé avec les couleurs ... je ne veux pas vous faire perdre votre temps ...)
    Dans mon éditeur de texte la ligne commence ç devenir super longue !

    Mon problème c'est que j'essaie de positionner le message à peu près au milieu de l'écran ! Du coup j'ai mis des espaces au début de mon expression.
    Est-ce qu'il existe une façon d'automatiser le nombre d'espace ? Sans avoir besoin d'en taper 30 par exemple ?
    Mhhh
    J'avoue n'avoir jamais entendu parlé de tel façon de faire donc j'imagine que ce sera impossible ... mais sait-on jamais !
    Dans tout les cas merci !

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

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

    Non seulement c'est moche et inefficace mais il suffit que l'utilisateur redimensionne son terminal pour que le centrage, appartenant alors au passé, parte en vrille.

    De plus, ce n'est pas facile de justifier centré.

    Voici des idées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ echo $COLUMNS
    274
    $ t="toto va au marché et achète des légumes."                                                                                                                                                                                                                  
    $ l=${#t}; echo $l
    40
    $ f="%$(( (COLUMNS + l)/2 ))s\n"
    $ printf $f "$t"
                                                                                                                      toto va au marché et achète des légumes.
    COLUMNS est en majuscules; c'est donc une variable d'environnement. Tu as la même. C'est la largeur du terminal en caractères. Il existe aussi LINES pour la hauteur.
    La variable "l" est la longueur de ton texte.
    f est le format d'affichage pour printf. Ici, une chaîne de caractères justifiée à droite de longueur calculée. Ou en une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf "%$(( (COLUMNS + ${#t} )/2 ))s\n" "$t"
    On peut aussi utiliser le placement sur le terminal ... mais là, il faut en plus calculer la hauteur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf "\033[%u;%uH" Y X

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    Juin 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2015
    Messages : 42
    Par défaut
    Ouhaw, oui ... pas facile!

    Je vais être sincère : "the simpler the better"

    Je vais partager mon petit script avec mes amis. Et j'ai aussi envie qu'ils arrivent à le modifier en cas de besoin ... donc je vais éviter de faire dans l'inutilement compliqué.

    Mais sinon ton explication est tout à fait compréhensible. Merci d'avoir pris le temps d'être clair et à la porté de tout le monde.

    Bonne journée à tous.

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

Discussions similaires

  1. Copier/Coller format valeur, avec la commande destination
    Par Xenemac dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2018, 14h36
  2. [RegExp] Format d'une date avec la commande Pattern sur un Input
    Par CrasherSEP dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 24/05/2016, 09h15
  3. Problème de format de montant avec la commande BCP
    Par bestdali dans le forum Outils
    Réponses: 1
    Dernier message: 05/05/2011, 12h01
  4. Prblème avec la commande system
    Par AnneOlga dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/03/2004, 16h05
  5. problème HD ntfs formaté sous WinXP avec win2000
    Par kalminou dans le forum Windows XP
    Réponses: 7
    Dernier message: 27/08/2003, 17h45

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