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 :

Programmer un retour arrière dans un shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Points : 91
    Points
    91
    Par défaut Programmer un retour arrière dans un shell
    Bonjour,
    Lorsqu'on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo -e "reprise de script\n"
    il y aura un retour charriot après l'affichage de "reprise de script"
    Que pourrais-je mettre entre " et reprise, afin de supprimer un retour chariot qu'il y a eu sur la ligne d'avant, c'est-à-dire pour faire remonter mon affichage d'une ligne, bref, un retour arrière en fait ?
    Et est-ce que ce genre de caractère, tout comme \n, à un nom ?
    D'avance merci

  2. #2
    Membre éprouvé Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 346
    Points : 977
    Points
    977
    Par défaut
    \n n'est pas un retour charriot, c'est un saut de ligne.
    Le retour charriot, c'est \r.
    Et le retour en arrière que tu cherches, c'est \b.
    Cf. help echo, et tu peux jeter un œil à ça aussi : https://fr.wikipedia.org/wiki/Americ...C3%A8res_ASCII

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    Génial, merci
    mais \n et \r, c'est pareil, ca donne le même résultat, non ?

  4. #4
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    le -e c'est pour \n, mais apparemment pas pour \b qui ne marche pas ?

  5. #5
    Membre éprouvé Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 346
    Points : 977
    Points
    977
    Par défaut
    Prends le temps de lire la documentation et de faire quelques essais, tu verras que \r et \n ont des effets différents, et que \b marche très bien.
    Sur ce, bonne nuit !

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    Citation Envoyé par help echo
    \b backspace
    pour faire ce que tu veux
    Citation Envoyé par BEEP-BEEP
    faire remonter mon affichage d'une ligne
    il faut aller plus loin :
    • déplacer le curseur au début de la ligne précédente
    • nettoyer la ligne entière
    • afficher le nouveau texte
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    C'est trop tard ! Quand tu as envoyé "\n" dans le flux, il n'y a pas de retour en arrière possible. La bonne méthode est de modifier la commande précédente pour qu'elle ne fasse pas ce "\n". Si tu ne peux pas, il te reste les méthodes expliquées par balkany et N_BaH, que le destinataire (console ou autre) n'est pas obligé de considérer. La méthode de rattrapage peut essayer de jouer sur le contenu (le texte) ou le contenant (la console).
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    C'est trop tard ! Quand tu as envoyé "\n" dans le flux, il n'y a pas de retour en arrière possible. La bonne méthode est de modifier la commande précédente pour qu'elle ne fasse pas ce "\n". Si tu ne peux pas, il te reste les méthodes expliquées par balkany et N_BaH, que le destinataire (console ou autre) n'est pas obligé de considérer. La méthode de rattrapage peut essayer de jouer sur le contenu (le texte) ou le contenant (la console).
    Merci pour vos commentaires.
    Mais je n'y arrive pas.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #*!/usr/bin/env bash
    echo "Appuyer la touche <Entrée> pour continuer..."
    read touche
    case $touche in
    *)	echo -e "Reprise du script...\n"
    	;;
    esac
    donne à l'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    toto@ma_machine:~$ ./pause.sh
    Appuyer la touche <Entrée> pour continuer...
     
    Reprise du script...
    Donc, je n'arrive pas à supprimer la ligne entre Appuyer...et Reprise malgrès tous mes essais avec notamment \b

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    c'est plus simple que ta première explication laissait supposer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "blah"
    read -sn 1 touche # une seule touche + pas d'affichage
    echo 'reprise'
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    AVANT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ((q=1;q<20;q++));do for ((i=0;i<$q;i++)); do echo -n "#";done; echo "";if [ $((q%10)) -eq 0 ];then echo -n "Appuyer la touche <Entrée> pour continuer... ";read -sn1;echo -ne "\r                                                        \r";fi;done
    (en une ligne puis déplié)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for ((q=1;q<20;q++))
    do 
        for ((i=0;i<$q;i++))
        do 
            echo -n "#"
        done
        echo ""
        if [ $((q%10)) -eq 0 ]
        then 
            echo -n "Appuyer la touche <Entrée> pour continuer... "
            read -sn1
            echo -ne "\r                                                        \r"
        fi
    done
    PENDANT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ for ((q=1;q<20;q++));do for ((i=0;i<$q;i++)); do echo -n "#";done; echo "";if [ $((q%10)) -eq 0 ];then echo -n "Appuyer la touche <Entrée> pour continuer... ";read -sn1;echo -ne "\r                                                        \r";fi;done
    #
    ##
    ###
    ####
    #####
    ######
    #######
    ########
    #########
    ##########
    Appuyer la touche <Entrée> pour continuer...
    APRÈS
    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
    $ for ((q=1;q<20;q++));do for ((i=0;i<$q;i++)); do echo -n "#";done; echo "";if [ $((q%10)) -eq 0 ];then echo -n "Appuyer la touche <Entrée> pour continuer... ";read -sn1;echo -ne "\r                                                        \r";fi;done
    #
    ##
    ###
    ####
    #####
    ######
    #######
    ########
    #########
    ##########
    ###########                                 
    ############
    #############
    ##############
    ###############
    ################
    #################
    ##################
    ###################
    Désolé pour la répétition, mais au moins, c'est clair.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    Impec. Merci à tous les deux ;-)

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

Discussions similaires

  1. [lftp] Code retour dans le shell
    Par extjbrunet dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 22/11/2013, 23h19
  2. Réponses: 19
    Dernier message: 08/07/2010, 22h30
  3. Récupérer dans un programme C la valeur de retour d'un script shell
    Par domiq44 dans le forum Bibliothèque standard
    Réponses: 3
    Dernier message: 23/12/2009, 20h02
  4. Réponses: 2
    Dernier message: 12/12/2008, 07h19
  5. retour à la ligne dans le shell bash, inputrc?
    Par reptils dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 03/12/2008, 10h07

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