Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako izmeniti textcolor u shell-u kod linux-a?

[es] :: C/C++ programiranje :: Kako izmeniti textcolor u shell-u kod linux-a?

[ Pregleda: 3151 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

n1tr0
Freelance
Cortanovci / NS

Član broj: 55279
Poruke: 465
..mtsns-ns.customer.sbb.co.yu.

Sajt: grubicv.iz.rs


+2 Profil

icon Kako izmeniti textcolor u shell-u kod linux-a?22.11.2005. u 05:42 - pre 224 meseci
Programiram u C++, ali sam programirao za windows ili DOS.
Znam da je za DOS postojao conio.h i u njemu textcolor i textbackground, a sada me zanima koji header file treba da koristim da bi promenio boju slova i pozadine u shell-u Linux-a. Moze neki primer kako se to radi i da li treba gcc-u neki dodatni parametar prilikom compile-ovanja(kao npr. -lm kod math.h).
 
Odgovor na temu

farstar

Član broj: 52375
Poruke: 107
*.ptt.yu.



Profil

icon Re: Kako izmeniti textcolor u shell-u kod linux-a?22.11.2005. u 09:04 - pre 224 meseci
Jedno resenje za ispis slova razlicite boje u linux konzoli
je koriscenje specijalnih sekvenci znakova za boje u
recimo pozivima printf() funkcije koje terminal driveru
govore da bromeni boju ispisa.

Znaci bez ikakvih dodatnih biblioteka i parametara gcc-u
pri kompilovanju.


[Ovu poruku je menjao farstar dana 22.11.2005. u 10:05 GMT+1]
 
Odgovor na temu

n1tr0
Freelance
Cortanovci / NS

Član broj: 55279
Poruke: 465
*.static.sbb.co.yu.

Sajt: grubicv.iz.rs


+2 Profil

icon Re: Kako izmeniti textcolor u shell-u kod linux-a?29.11.2005. u 05:36 - pre 223 meseci
Citat:
Jedno resenje za ispis slova razlicite boje u linux konzoli
je koriscenje specijalnih sekvenci znakova za boje u
recimo pozivima printf() funkcije koje terminal driveru
govore da bromeni boju ispisa.


Pa dobro koje su to znakovne sekvence(daj neki primer).
Kod ne treba da promeni izgled(boju) citave konzole vec karaktera koji se ispisuju posle te komande. Ja sam cuo da se to radi pomocu ncurses.h. Da li je to tacno?
Moze neko da navede primer.
 
Odgovor na temu

farstar

Član broj: 52375
Poruke: 107
*.ptt.yu.



Profil

icon Re: Kako izmeniti textcolor u shell-u kod linux-a?29.11.2005. u 06:36 - pre 223 meseci
Code:

/*
 * Za ovaj programcic treba ti baza reci YuRecnika (Reci.dat)
 */

/*
        Srpski Recnik za Linux 0.2
        
Kompajlirajte ga sa:
# gcc sr.c -o sr

i startujte ga sa:
# ./sr

Naravno, podrazumeva se da ste sva fajlove sr.c i reci.dat odpakovali u jedan direktorijum,
da se nalazite u njemu i da ne kucate # :-)

Svaki komentari i predlozi oko optimizacije i uopste oko celog programa su dobrodosli!


Paznja : Program Srpski Recnik za Linux 0.2 je pod GNU licencom!

########################## license & copyright header ##########################
#                                                                              #
#       Copyright (c) 2000 by Predrag Damnjanovic ([email protected])      #
#                                                                              #
#       This program is free software; you can redistribute it and/or          #
#       modify it under the terms of the GNU General Public License as         #
#       published by the Free Software Foundation; either version 2 of         #
#       the License, or (at your option) any later version.                    #
#                                                                              #
#       This program is distributed in the hope that it will be useful,        #
#       but WITHOUT ANY WARRANTY; without even the implied warranty of         #
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          #
#       GNU General Public License for more details.                           #
#                                                                              #
#       You should have received a copy of the GNU General Public License      #
#       along with this program in the file 'COPYING'; if not, write to        #
#       the Free Software Foundation, Inc., 59 Temple Place - Suite 330,       #
#       Boston, MA 02111-1307, USA, or contact the author:                     #
#                                                                              #
#                            Predrag Damnjanovic ([email protected])       #
#                                     <http://serbdict.sourceforge.net/>       #
#                                                                              #
######################## end license & copyright header ########################

*/

#include <stdio.h>
#include <string.h>
// #include <stdlib.h>        // mozda neki kompajler trazi da se ovo uncomment-uje
// #include <ctype.h>        // i ovo

char dest[250];    // Sluzi nam kao pomocni string nad kojim izvrsavamo neke operacije

int main(int argc, char *argv[])
{
  char buffer[256], b[256], bb[256], a[30], dir[100];
  FILE *fp;
  int i=0,n=0,p=0,pp=0,bezb=0,parg=0,t=0;
  char *trepce="", *trepceb="", *normalna="", *plava="", *tirkiz="", *crvena="", *zelena="", *braon="", *ljubicasta="", *bela="", *scrvena="", *szelena="", *sljubicasta="", *roze="", *splava="", *scrna="", *stirkiz="";

  // Provera da li da ispisuje text bez boje
  if (argc>1) if (argv[1][0]=='-' && argv[1][1]=='b') bezb=1;
  if (argc>2) if (argv[2][0]=='-' && argv[2][1]=='b') bezb=1;
  if (bezb==0) {                  // Boje su uradjene zahvaljujuci mom prijatelju predatoru - [email protected] (nije Rus, Srbin je :))
  // trepce = "\x1B[0;5m";
  // trepceb = "\x1B[1;5m";
  normalna = "\x1B[0;m";
  // plava = "\x1B[0;34m";
  tirkiz = "\x1B[0;36m";
  // crvena = "\x1B[0;31m";
  zelena = "\x1B[0;32m";
  braon = "\x1B[0;33m";
  ljubicasta = "\x1B[0;35m";
  // bela = "\x1B[0;38m";
  scrvena = "\x1B[1;31m";
  // szelena = "\x1B[1;32m";
  // sljubicasta = "\x1B[1;35m";

  // roze = "\x1B[1;35m";
  splava = "\x1B[1;34m";
  // scrna = "\x1B[1;30m";
  // stirkiz = "\x1B[1;36m";
}

  // Lociranje baze reci
  dir[0]=0x00;
  strcat(dir, argv[0]);
  i=(int)(strrchr(dir, '/')-dir);
  dir[i+1]=0x00;
  strcat(dir, "reci.dat");
  // dir[0]=0x00; strcat(dir, "/bin/reci.dat");        // Ovo aktivirajte samo ako vam se baza reci ne nalazi u istom direktorijumu sa sr.c. U tom slucaju unesite i putanju do baze umesto /bin/reci.dat koji ovde stoji samo kao primer.

  // Ako ima argumenata onda odmah prevodi rec datu kao argumenat.
  if (argc>1) if (argv[1][0]!='-') parg=1;
  if (argc>2) if (argv[2][0]!='-') parg=2;
  if (parg>0) {a[0]=0x00; strcat (a, argv[parg]);}

  // Sada ispisujemo naslov programa
  printf("%s%s%s%s%s%s%s%s", scrvena, "        ---", normalna, splava, "Srpski Recnik za Linux 0.2", scrvena, "---\n", normalna);
  if (parg==0) printf("%s%s", braon, "\nKucaj q za izlazak!\n\n");

  while (1) {        // Glavna rutina za pretrazivanje

    if (parg==0) {    // Ako nije uneta rec za prevod kao argumenat, pita koju rec da prevede
      a[0]=0x00; n=0;        // Setuju se pocetne vrednosti
      printf("%s%s%s", zelena, "Unesi rec: ", normalna);
      scanf("%s", a);        // Upit za rec
      printf("%s","\n");
    }

    a[0]=toupper(a[0]);     // Pretvaranje prvog slova u veliko
    for (i=1;i<(int)(strlen(a));i++) a[i]=tolower(a[i]);     // a ostalih u malo
    i=0;    // Promenljivu 'i' smo koristili jer nemamo potrebe da koristimo specijalnu promenljivu samo zbog malih i velikih slova, dakle stedimo resurse :). Promenljivu 'i' vracamo na pocentu vrednost jer cemo kasnije da je koristimo

    if (a[0]=='Q' && a[1]==0x00) return 0;  // Ako korisnik ukuca q izlazimo iz programa

    fp = fopen(dir, "r");        // Otvaramo bazu reci
    fgets(buffer, 256, fp);    // Preskacemo prvu liniju u bazi jer je nebitna

    while(fgets(buffer, 256, fp) != NULL)  // ovo znaci da se blok koji sledi ponavlja sve dok ne dodjemo do kraja fajla, tj. dok se cela baza pretrazi
    {
      // Sada odbacujemo prva tri slova iz stringa koji treba da se pretrazi jer je to string 'En#' ili 'Sr#'. To nemamo potrebe da pretrazujemo
      strcpy(b, buffer+3);
      b[(int)(strstr(b, "|")-b)]=0x00;     // Odsecamo prevode, znaci string koji se pretrazuje nosi samo rec, a ne i njen prevod

      // Blok koji sledi pretrazuje string i ispisuje na ekranu rec koju je nasao i njen prevod
      t=(int)(strstr(b, a)-buffer);
      // printf ("%s%d%s", "***", t, "***");
      if (t<1000 && t>-1000) {     
        n++;     // Belezimo da je jos jedno znacenje reci nadjeno. Ovaj broj kasnije koristimo da bismo kasnije korisniku napisali koliko je prevoda nadjeno
        // Blok koji sledi formatira text koji ce da se prikaze, tj. sredjuje ga
        for (p=3, pp=0; p<(int)(strlen(buffer))+1; p++, pp++) {
          if (buffer[p]=='|') {bb[pp]=' '; bb[pp+1]='='; bb[pp+2]=' '; pp=pp+2; continue;};
          if (buffer[p]=='-') {bb[pp]=','; bb[pp+1]=' '; pp++; continue;};
          bb[pp]=buffer[p];
        }
        if (i==0) {printf("%s%c%c%s%s", zelena, buffer[0], buffer[1], " = ", bb); i=1;} else {printf("%s%c%c%s%s", tirkiz, buffer[0], buffer[1], " = ", bb); i=0;}   // Ispisujemo prevod
      }
    } // Kraj pretrazivanja

    fclose(fp);    // Zatvaramo bazu reci

    if (n==0) printf("%s%s%s%s%s%s", normalna, "\nPrevod reci ", ljubicasta, a, normalna, " nije nadjen!\n\n"); else printf("%s%s%s%d%s%s%s%s%s%s", normalna, "\nUkupno nadjeno ", ljubicasta, n, normalna, " prevoda reci ", ljubicasta, a, normalna, "\n\n");   // Ispisujemo koliko je prevoda nadjeno
    if (parg>0) break;        // Ako je bilo argumenata onda izlazimo iz progama

  }    // Kraj glavne rutine
  return 0;    // Kraj programa !!!
}




[Ovu poruku je menjao farstar dana 29.11.2005. u 07:42 GMT+1]
 
Odgovor na temu

n1tr0
Freelance
Cortanovci / NS

Član broj: 55279
Poruke: 465
*.static.sbb.co.yu.

Sajt: grubicv.iz.rs


+2 Profil

icon Re: Kako izmeniti textcolor u shell-u kod linux-a?29.11.2005. u 12:09 - pre 223 meseci
Nisam jos stigao da pregledam sve, ali iz koda vidim da je to ono sto me zanima.
Hvala na odgovoru.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako izmeniti textcolor u shell-u kod linux-a?

[ Pregleda: 3151 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.