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

Linux Discussion :

builtin echo -e, caractere '\c'


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Par défaut builtin echo -e, caractere '\c'
    Bonjour!

    Je doit recoder la builtin echo et j'ai un probleme tout bete pour l'option -e:

    d'apres le man le caractere '\c' suprime le '\n'. Dans les fait apres un \c tout les \n sont ignorer... exemple echo -e "\n\c\n\n" donne qu'UNE ligne vide et pas 4.

    Mon probleme est simple:
    dois-je recoder cette particularitee? ou il existe un code ascii qui le fait... j'aurait juste un printf de se code a faire :-)

    J'ai regarder le man et google... mais vu mon niveau d'anglais peut-etre que la reponse m'a echaper voila ce que j'ai trouver sur le net et un man ascii ne m'a pas plus aider.
    Les code de '\a' '\b' etc... se trouve dans ce qui suit... j'ai meme verifier en C avec un printf("%d", '\a'); mais un printf("%d", '\c'); ne compile pas!

    Reconnaissait-vous la dedant ce fameux caractere?
    Codes de commande:

    NUL: Null
    TAB: Horizontal Tab
    DC1: Device Control 1, XON
    EM: End of Medium
    SOH: Start of Header
    LF: Line Feed
    DC2: Device Control 2
    SUB: Substitute
    STX: Start of Text
    VT: Vertical Tab
    DC3: Device Control 3, XOFF
    ESC: Escape
    EOT: End of Transmission
    FF: Form Feed
    DC4: Device Control 4
    FS: File Separator
    ENQ: Enquiry
    CR: Carriage Return
    NAK: Negative Acknowledge
    GS: Group Separator
    ACK: Acknowledge
    SO: Shift Out
    SYN: Synchronous Idle
    RS: Record Separator
    BEL: Bell
    SI: Shift In
    ETB: End of Transmission Block
    US: Unit Separator
    BS: Backspace
    DLE: Data Link Escape
    CAN: Cancel
    SP: Space


    Merci par avance!
    J'espere avoir etait clair et poster au bon endroit comme il est question de bash...

  2. #2
    Membre chevronné Avatar de herzleid
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 393
    Par défaut
    Je ne suis pas un spécialiste mais il est normale que tu ais UNE seule ligne, car le bash tiens compte de ton \c . Ou alors j'ai pas tout compris.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Par défaut
    oui avec -e comme option a echo
    on doit resoudre ce qu'il y a dans les guillemets. C'est a dire que echo -e "\n" fait deux retour a la ligne. Alors qu'un echo "\n" ecri le '\n' sur l'ecran plus le retour a la ligne de echo.

    mais la c'est moi qui doit coder ce fonctionement de bash, puisque je fait un minishell.
    Le truc c que si j'ai un echo -e "\a" si je fait un printf("%c", 7); cela fait sonner le buzzer. (7 etant le code ascii de '\a'=BEL)


    Ce que je me demande c quel est le code ascii de '\a'... je le trouve pas...

    Si il existe pas il faut que je code le fait que si j'ai '\c' je doit ignorer tout les '\n' suivant grrrr...
    Et peu etre qu'il existe pas car printf("%d", '\c'); ne compile pas...


    Merci pour ton aide!!!

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    le code asci je ne sais pas mais le code hexa c est 0x0A pour le Carriage return le \c n est que un caractere pour "backspace" donc le 0x1B ......
    tu devrait pouvoir emuler cela lorsque tu parse la ligne en retirant ou pas tout simplement le \n en fonction d'un \c .....

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Par défaut
    en fait javai la fleme de l'emuler...

    mai le \c c'est ni Bacspace ni escape...
    Je trouve pas le quel c'est parmi la liste que j'ai donner plus haut...

    Et il semblerai qu'il faille que je le code moi meme car ca a pas l'air d'etre un code ascii
    Merci de ton aide!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/03/2007, 02h29
  2. éliminer un caractere d'un string
    Par no-vice dans le forum Langage
    Réponses: 5
    Dernier message: 09/08/2002, 14h55
  3. Réponses: 3
    Dernier message: 12/06/2002, 21h15
  4. Réponses: 2
    Dernier message: 29/05/2002, 20h43
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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