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 :

[c] Afficher les 256 couleurs sous bash


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 33
    Points : 33
    Points
    33
    Par défaut [c] Afficher les 256 couleurs sous bash
    Bonjour,

    Je viens d'écrire un petit programme pour Linux, pour savoir si le terminal peut afficher les 256 couleurs (ce script s'inspire d'un script Perl : http://www.frexx.de/xterm-256-notes/ )

    J'utilise les codes d'échappement de nos ancêtres le VT...

    Si vous avez des conseils sur ma manière d'écire du C allez-y

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    /* If possible, display the 256 colours. Only for Linux
     *
     * with bash
     * foreground \33[38;5;${code}m
     * background \33[48;5;${code}m
     *
     * with c
     * fg: \e[38;5;codem
     * bg: \e[45;5;codem
     * 
     */
     
    #include <stdio.h>
     
    int main()
    {
     
      /* Initialise the main variables
       * colour: for the 256 colours (0-255)
       * space: to insert space or newline
       */
     
      int colour = 0;
      int space = 0;
     
      /* Print the 16 first colours, known as colours system */
     
      printf("System colours:\n")
      for( ; colour < 16; colour++) {
        printf("\e[48;5;%dm  ", colour);
      }
      printf("\e[0m\n\n");
     
      /* The 216 colours */
     
      printf("Color cube: 6x6x6\n");
      for ( ; colour < 232; colour++, espace++) {
        if ((espace%6) == 0) {
          printf("\e[0m ");
        }
        if ((espace%36 == 0)) {
          printf("\e[0m\n");
        }
        printf("\e[48;5;%dm  ", colour);
      }
      printf("\e[0m\n\n");
     
      /* And the grey colours */
     
      printf("Greyscale ramp\n");
      for ( ; colour < 256; colour++) {
        printf("\e[48;5;%dm  ", colour);
      }
      printf("\e[0m\n\n");
     
     
      return 0;
    }

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    /* If possible, display the 256 colours. Only for Linux
     *
     * with bash
     *  foreground: \33[38;5;${code}m
     *  background: \33[48;5;${code}m
     *
     * with C
     *  foreground: \033[38;5;codem
     *  background: \033[45;5;codem
     */
     
    #include <stdio.h>
     
    #define FIRST_SYSTEM_COLOUR 0
    #define END_SYSTEM_COLOUR   16
     
    #define FIRST_NORMAL_COLOUR 16
    #define END_NORMAL_COLOUR   232
     
    #define BEGIN_GREY_COLOUR   232
    #define END_GREY_COLOUR     256
     
    int main(void)
    { 
       /* Print the 16 first colours, known as system colours */
       puts("System colours :"); 
     
       for(unsigned char colour = FIRST_SYSTEM_COLOUR; colour < END_SYSTEM_COLOUR; colour++) 
       {
          printf("\033[48;5;%hhum  ", colour);
       }
     
       puts("\033[0m\n");
     
       /* The 216 colours */
       puts("Color cube: 6x6x6");
     
       for(unsigned char colour = FIRST_NORMAL_COLOUR, space = 0; colour < END_NORMAL_COLOUR; colour++, espace++) 
       {
          if(espace % 6 == 0) 
          {
             fputs("\033[0m ", stdout);
          }
     
          if(espace % 36 == 0)
          {
             puts("\033[0m");
          }
     
          printf("\033[48;5;%hhum  ", colour);
       }
     
       puts("\033[0m\n");
     
       /* And the grey colours */
       puts("Greyscale ramp");
     
       for (unsigned char colour = BEGIN_GREY_COLOUR ; colour < END_GREY_COLOUR; colour++) 
       {
          printf("\033[48;5;%hhum  ", colour);
       }
     
       puts("\033[0m\n");
     
       return 0;
    }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 33
    Points : 33
    Points
    33
    Par défaut
    nicolas.sitbon > Merci beaucoup ! A première vue sans coloration syntaxique, ce code est beaucoup plus clair. Il y a pas mal d'éléments que tu as amélioré, je vais regarder ceci de plus près.

Discussions similaires

  1. Afficher les fichiers des sous rep sans l'arboresence
    Par shonguiz dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 02/06/2012, 07h01
  2. [XL-2007] Afficher palette 256 couleurs
    Par eliot.raymond dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/01/2012, 13h12
  3. script shell qui affiche les repertoires et sous repertoires
    Par Alex le grand dans le forum Linux
    Réponses: 4
    Dernier message: 16/12/2009, 19h06
  4. Afficher les fichier .htaccess sous kubuntu
    Par Maskime dans le forum Eclipse PHP
    Réponses: 2
    Dernier message: 09/02/2009, 14h53
  5. [TCD] : pas afficher les lignes des sous totaux
    Par hagen_71 dans le forum Excel
    Réponses: 1
    Dernier message: 09/10/2007, 14h03

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