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 :

Tracer une ligne


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Par défaut Tracer une ligne
    Salut

    Je cherche à tracer une ligne (dans mon cas pour séparer 2 lignes de commandes). Je n'ai rien trouvé à ce sujet sur le net

    Ecrire des "_" ou "-" ne me convient pas parceque je ne sais pas combien en afficher, vu que je veux que ma ligne prenne toute la largeur disponible.

    Est-ce que quelqu'un a une idée ?

    Merci !

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 127
    Par défaut
    Salut, Sephi
    Citation Envoyé par Sephiroth Lune Voir le message
    Je cherche à tracer une ligne (dans mon cas pour séparer 2 lignes de commandes).
    Dans une fenêtre de terminal, donc ?

    Citation Envoyé par Sephiroth Lune Voir le message
    Ecrire des "_" ou "-" ne me convient pas parce que je ne sais pas combien en afficher, vu que je veux que ma ligne prenne toute la largeur disponible.

    Est-ce que quelqu'un a une idée ?
    Faudra bien que tu en passes par là, car
    1. écrire sur le canvas limité à la fenêtre du terminal depuis une appli X (genre écrite en Lazarus) même pas j'y pense, d'autant plus que,
    2. dans une fenêtre de terminal, echo $COLUMNS devrait faire ton bonheur pour le nombre de "-" ou "_" à insérer


    [ EDIT ] Ajout d'une précision :
    pour que "echo $COLUMNS" (ou "largeur=$COLUMNS") fonctionne dans un script, il faut un Bash récent (> 4.2.10 je crois) et rajouter "-i" à la fin du shabang :
    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
    #!/bin/bash -i
     
    # si $COLUMNS "#!/bin/bash -i" sinon vide !
    largeur=$COLUMNS
     
    ### sinon, utiliser 
    #largeur=$(tput cols)
     
    echo "$largeur"
    cptr=0
    while [ $cptr -lt "$largeur" ]
    do
        echo -n "_" # ou "-"
        cptr=$(($cptr+1))
    done
    echo
     
    echo "autre commande"
    [ /EDIT ]

  3. #3
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Si COLUMNS n'est pas renseigné, deux autres solutions :

    bash & ksh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ((i=0;i<$(tput cols);i++)); do printf "_"; done echo
    plus portable (dash):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    i=$(tput cols); while [ $i -gt 0 ] ; do printf "_"; i=$((i-1)); done; echo

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 127
    Par défaut
    Et juste pour le fun :

    Images attachées Images attachées  

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,
    En bash en trichant un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ printf "\e[4m%$(tput cols)s\e[m"

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 127
    Par défaut
    Yep !
    Citation Envoyé par disedorgue Voir le message
    Bonjour,
    En bash en trichant un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ printf "\e[4m%$(tput cols)s\e[m"
    EX-CEL-LENT !

    Mais un truc cool, pour les neuneus comme moi, ça serait de décortiquer ta commande, parce que je n'ai pas compris/pas trouvé d'où sortait le caractère "_"...
    Et si on en veut un autre, genre "-" ou "=" ?

    Parce que man printf sur ce coup-là, c'est moyen, très moyen
    Merci,

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    C'est pour ça que je dis en trichant:

    sous bash:
    \e[4m c'est le control ESC[4m qui dit au terminal de passé en mode souligné.
    \e[m pour revenir en normal.

    le printf est juste un printf classique (exemple):

    "%123s" qui va caler 123 espaces avant d'afficher la chaine (vide ici), et comme le soulignement est activé, on a donc 123 espaces soulignés.

    D'ailleurs, si tu copie/colle la ligne soulignée dans un éditeur, tu ne verras que des espaces (en gros c'est une ligne virtuelle).

    Tu peux aussi tester:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf "\e[7m%$(tput cols)s\e[m"
    Ici, au lieu du soulignement, j'active le mode inversé.

  8. #8
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 127
    Par défaut
    OK merci !
    Citation Envoyé par disedorgue Voir le message
    \e[4m c'est le control ESC[4m qui dit au terminal de passé en mode souligné.
    \e[m pour revenir en normal.
    J'avais bien repéré l'ESC mais je n'arrivais pas à aller plus loin, je suis un gros boulet, c'est les commandes VT52/VT100 !

    Merci de m'avoir rappelé cette époque lointaine...

Discussions similaires

  1. [FLASH MX2004] Tracer une ligne en temps réel
    Par tomtom- dans le forum Flash
    Réponses: 1
    Dernier message: 16/02/2006, 09h52
  2. Tracer une ligne sur une image
    Par Guillaume602 dans le forum Windows
    Réponses: 5
    Dernier message: 05/01/2006, 20h33
  3. [VB.NET] Tracer une ligne (OnPaint)
    Par Emcy dans le forum Windows Forms
    Réponses: 6
    Dernier message: 24/03/2005, 13h09
  4. [FP]Tracer Une ligne avec Dev-pascal
    Par yffick dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 17/12/2003, 16h33
  5. Tracer une ligne droite sans les interruptions
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 25/11/2002, 01h22

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