Sziasztok, az a kérdésem, hogy ha valamit ki akarok íratni (mondjuk printf-fel) a terminálra, akkor miként tudom változtatni annak a szövegnek a színét? Gondolom, kéne legyen rá valami színkódszerűség...
- 3214 megtekintés
Hozzászólások
Nem mély az a kozol, egyszerűen csak konzol.
Bár lehet, hogy a jobb hűtés érdekében te a pincében tartod, akkor tényleg mély.
Amúgy a válasz: szabványos escape szekvenciákkal.
http://www.google.com/search?client=opera&rls=en&q=bash+text+colors&sou…
http://www.google.com/search?client=opera&rls=en&q=colors+on+console&so…
- A hozzászóláshoz be kell jelentkezni
ansi escape sequence-ekkel
pl.:
^[[31;1mpiros^[[0m
arra vigyazz, hogy ^[ nem ket karakter, hanem egy literalis escape
igy viszed be: ctrl-v esc
--
Unix, Perfectly "natural" after five or ten years.
- A hozzászóláshoz be kell jelentkezni
Igen, hát efféle szekvenciákat sokat láttam már - a baj az, hogy nem értem, mit jelent! Az odáig világos, hogy az első karakter egy Esc - asszem 27 a kódja talán decimálisan, de ha nem az is mindegy, annak utána tudok nézni. Hanem az utána következő mindenfélét nem értem! Ugye, az én csekélyértelmű medvebocs-fejemnek az lenne a logikus, hogy az Esc azt jelentse, hogy valami speciális parancsot küldünk - utána jöjjön valami, ami azt mondja, hogy most konkrétan színkódot adok meg (és nem mondjuk kurzormozgatást vagy konzolcsengő bekapcsolást), aztán jön a szín kódja, aztán a kiiratandó szöveg, ami egészen addig megtartja ezt a színét, míg csak nem mondunk neki valami más színkódot!
No és ebből úgy látom odáig oké, hogy az Esc speciális parancsot vezet be; utána azonban egymerő káosznak tűnik számomra az egész, főleg 2 okból: mi a fene az az "m" karakter az elején?! És a végén?! Nézegettem pár gobo-szkriptet, amik színesen írnak ezt-azt, de még abból sem értem, mert mindig más kódokkal zárják le a színes szöveg sorozatát! Holott már azt sem értem, minek azt lezárni, mert ha lezárjuk, utána milyen színnel fog írni a masina, ha egyszer nem adtunk meg neki újabb színkódot?!
Szóval ez nekem momentán magas. Pedig itt kifejezetten még nem is az angol szöveg nem-magyarságával van bajom, mert aránylag könnyű, de az egésznek a logikája tök homály előttem. Tiszta röhej, hogy ennyire elhasaltam a színeken, amikor ennél sokkal nehezebb dolgokat szerintem könnyen megértettem. (nem mindent, de volt már rá példa...)
Szerintem valahogy túlbonyolították ezt a témát a tervezők. Biztos meg lehet magyarázni, de egyelőre bizánci bonyolultságú az egész miskulancia nekem.
Az már csak hab a tortán, hogy ilyen idióta jelekkel kell kínlódni. Írják ki nekem mindegyik kódot hexában, az egyértelmű! Messze sokkal könnyebben átlátom azt.
(OFF itt, de megjegyzem, egyetlen dolog van, amit utálok a C-ben, de azt vastagon ám: hogy a 0x karaktersorozattal vezeti be a hexa számokat. Megszoktam még a C-64 idejében, hogy a $ előtét a hexa számok jele. Ráadásul az egyetlen karakter, nem kettő, mint a 0x. Hogy én ezt mennyire utálom a C nyelvben!)
-------------
:::A GoboLinux felhasználók hivatalos magyar fóruma: http://linux.birodalom.net/smf
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó
- A hozzászóláshoz be kell jelentkezni
> Hanem az utána következő mindenfélét nem értem!
A jelölés alkalmazásához nem szükséges a jelölés megértése.
> odáig oké, hogy az Esc speciális parancsot vezet be; utána azonban
Esc [ paraméterek műveletkód
> hogy a 0x karaktersorozattal vezeti be a hexa számokat
Egy már meglévő jelölési mód újrahasznosítása, a legkisebb változtatás elvének megfelelően. A '0' jelöli, hogy nem 10-es számrendszerbeli literál, az x pedig azt jelöli hogy nem oktális, hanem hexa.
> Megszoktam még a C-64 idejében, hogy a $ előtét a hexa számok jele.
Akkor ez a baj. Öreg kutya nem tanul új trükköt? :-)))
- A hozzászóláshoz be kell jelentkezni
A jelölés alkalmazásához igenis szükséges a megértése, mert pld így nem értem, melyik kódnak mi a hatása. Pld hogyan van lezárva a parancsstring, stb.
Nem lehetne hogy egyszerűen hexakódokkal csinálna valaki egy táblázatot a 16 színre, hogy "hé lamerkám, ilyen színnél ez a parancs eleje, aztán jön a szöveg amit ki akarsz iratni, utána meg ez"?!
Plíz hexakódokkal, oké? Hagyjuk a szegletes zárójeleket...
-------------
:::A GoboLinux felhasználók hivatalos magyar fóruma: http://linux.birodalom.net/smf
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó
- A hozzászóláshoz be kell jelentkezni
> nem értem, melyik kódnak mi a hatása. Pld hogyan van lezárva a parancsstring, stb.
Értelmezőt akarsz írni? Mert ha nem, akkor elég megnézni a kódokat valami leírásban. Pld: http://en.wikipedia.org/wiki/ANSI_escape_code
> "hé lamerkám, ilyen színnél ez a parancs eleje, aztán jön a szöveg amit ki akarsz iratni, utána meg ez"?!
Már kaptál ilyet: "elotte ^[[31;1m piros ^[[0m utana". Kipróbáltad?
> Plíz hexakódokkal, oké? Hagyjuk a szegletes zárójeleket...
Ezt mondod a HTML-re is? "Plíz hexakódokkal, oké? Hagyjuk a < > zárójeleket..."
- A hozzászóláshoz be kell jelentkezni
Ezek nemcsak színezésre jók, hanem kurzorvezérlésre is. A hosszuk meg ennek következtében változó.
Miért akarod, hogy valaki ideollózza neked a hautut? Magadtól nem tudod elolvasni?
(A DOS meg úgy jön ide, hogy ansi.sys néven ugyanezeket használhattad benne.)
- A hozzászóláshoz be kell jelentkezni
Akkor most megleplek. Soha életemben nem használtam ansi.sys-t. Dos alatt úgy progranyoztam, hogy 800×600 16 színű grafikus képernyőre írtam assemblerben rutincsomagot, aminek rutinjait C-ből hívogattam.
Továbbá, mit gondolsz, miért a hup-on vagyok gyakrabban és nem a Linuxfórumon? Hát hogy pld megszabaduljak tőled! Szeretném tehát, ha nem eregetnéd teli az itteni légkört is mindenféle mentális piszokkal. Nagyon szépen kérlek, tégy úgy, mintha én nem is volnék! Nem muszáj észrevenned a témáimat, oké?! Inkább lemondok a "segítségről" is, amit nyújtanál.
-------------
:::A GoboLinux felhasználók hivatalos magyar fóruma: http://linux.birodalom.net/smf
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó
- A hozzászóláshoz be kell jelentkezni
Köszönöm szívélyes köszönetedet. Kívánom a HUP-nak, hogy itt több időt tölts, mint amott.
- A hozzászóláshoz be kell jelentkezni
Asszem kipróbálom a megfelelő firefox extensiont, kiszűri-e a hozzászólásaidat. Egyelőre még nem voltál nagyon troll, de ismerlek már, és emiatt nekikészülök.
-------------
:::A GoboLinux felhasználók hivatalos magyar fóruma: http://linux.birodalom.net/smf
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó
- A hozzászóláshoz be kell jelentkezni
Régi szép DOS 3.22-es idők :)
- A hozzászóláshoz be kell jelentkezni
Én a DOS 6.22-t ismerem. Különben meg nem tudom, hogy jön ide...
-------------
:::A GoboLinux felhasználók hivatalos magyar fóruma: http://linux.birodalom.net/smf
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó
- A hozzászóláshoz be kell jelentkezni
Anno fél napokat töltöttünk azzal, hogy szép színes prompt-okat csináljunk :)
Ott ugyanígy escape szekvenciákkal müködik a dolog.
- A hozzászóláshoz be kell jelentkezni
int main()
{
printf("\033[31m piros \033[0m \n");
}
A \033 értelemszerűen az esc, oktális karakterkóddal.
Ezt bashben is meg tudod csinálni echo-val, pl. így:
echo $'\033[31m piros \033[0m'
ASCII escape szekvenciákról pl. itt: http://ascii-table.com/ansi-escape-sequences.php
- A hozzászóláshoz be kell jelentkezni
Embertelen szerencséd van, mert megtaláltam egy kőkorszaki forrásomat, ami ilyenekkel szerencsétlenkedik...
Az esc kódja 0x1b. Ilyesmik vannak:
printf("%cc",0x1b);//reset term
printf("%c[2J",0x1b);//erase screen
printf("%c[%d;%dH",0x1b,MAXROW-2,1);//cursor move (Row;Column)
Ezek gondolom elég világosak...
Nézzük ezt: ^[[31;1mpiros^[[0m
^[ : esc (0x1b)
[ : control sorozat jön
31;1 : red;bright
m : lezárás
Azaz: ^[[31;1m : ami ezután jön, az piros
Hasonlóan: ^[[0m : reset
Bővebben:
http://www.termsys.demon.co.uk/vtansi.htm
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
Valami már dereng, de azt nem értem, mi a fene az a ^[[0m : reset
Ugyanis egyszer már lezártuk a parancsstringet az "m" karakterrel, nem? Ezzel a parancssorral nem azt csináltuk-e, hogy az "aktuális írásszínt" beállítottuk pirosra? Tehát most már örökkön-örökké pirossal kéne írnia, amíg csak egy más színre utasító parancsstringet nem kap? Szóval, mi az a "reset" ott neki a kiirandó karakterlánc után?
-------------
:::A GoboLinux felhasználók hivatalos magyar fóruma: http://linux.birodalom.net/smf
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó
- A hozzászóláshoz be kell jelentkezni
^[[31;1m
De, lezártuk m-mel, innentől pirossal írsz.
Viszont normális ember nem ír mindent pirossal.
Sőt, ha valami más program is elkezd szemetelni a konzolra, akkor mostantól ő is pirossal fog szemetelni.
Éppen ezért, amint befejeztük a piros szöveget, rögtön takarítunk, azaz visszaállítjuk a színt a default értékre. Na ez az a bizonyos reset...
"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o
- A hozzászóláshoz be kell jelentkezni
> (OFF itt, de megjegyzem, egyetlen dolog van, amit utálok a C-ben, de azt vastagon ám: hogy a 0x karaktersorozattal vezeti be a hexa számokat. Megszoktam még a C-64 idejében, hogy a $ előtét a hexa számok jele. Ráadásul az egyetlen karakter, nem kettő, mint a 0x. Hogy én ezt mennyire utálom a C nyelvben!)
Költői kérdés: melyik volt régebben, a C programozási nyelv, vagy a C-64 gép?
- A hozzászóláshoz be kell jelentkezni
WTF is "mélykonzol"?
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
Itt a HUP-on vagy a Linuxfórumon olvastam valakitől, hogy "mélykonzol" és megtetszett. Definíció szerint:
mélykonzol = Nem virtuális terminál. Tehát olyan konzol/terminál, ami nem grafikus felületen működik. A kettő közt érdemes különbséget tenni, mert vanbnak dolgok, amik nem oldhatóak meg virtuális terminálban, csak mélykonzolban.
-------------
:::A GoboLinux felhasználók hivatalos magyar fóruma: http://linux.birodalom.net/smf
:::A #86-os sorszámú hivatalosan bejegyzett GoboLinux felhasználó
- A hozzászóláshoz be kell jelentkezni
"Nem virtuális terminál"
A terminál egy önálló harverelem, egy gép, amit soros vonalon kötsz a gépre.
Amit ctrl-F1-gyel és társaival kapsz, azok mind virtuális terminálok, hiszen az oprendszered okozza őket.
- A hozzászóláshoz be kell jelentkezni
Használd nyugodtan a konzol, terminál, terminál emulátor kifejezéseket.
- A hozzászóláshoz be kell jelentkezni
Akkor jelzem feléd, hogy ez inkább hangzik hülyén mint okosan.
Amúgy, ahogy ezt itt már más is írta, ez a terminál is virtuális. A valódi terminal egy hw elem, ami az esetek elsöprő többségében soros porton csatlakozik a számítógéphez. Jellemzően nem otthoni környezetben használatos.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
Én speciel home környezetben használok ilyet (egy meg tartalékként a szekrény tetején figyel), papírfehérnek hívták anno ezt a megjelenítést, és bár tud VT-sok emulációt is, szín az en bloc nem ér semmit :-P És hogy ontopic legyek: RTM ncurses, illetve RTM termcap.
- A hozzászóláshoz be kell jelentkezni
És hol jellemezed te az otthoni felhasználót? :-D Nyilván nekem is van otthon egy HP 700/96-os, de szerintem ez kivétel.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
Igy sokkal tudomanyosabban hangzik :) A pú szinesre festese jol.
- A hozzászóláshoz be kell jelentkezni
Mivel a tema amugy is C/C++. Irtam egy kis libet, amivel lehet szinesen irkalni. Toltheto innen. Annyit kell tudni rola, hogy nem mindig valtok verzot, erdemes a ChangeLog-ot figyelgetni, es ujratolteni a csomagot.
Gentoo-bol lettek a fuggvenynevek atemelve. Jelenleg einfo, ewarn, eerror, ebegin, eend, ebeep es epause van, ezen felul esyslog. Az einfo/ewarn/eerror/ebegin/esyslog fuggvenyek printf-szeruek, a printf-ehez nagyon hasonlo szintaxissal rendelkeznek, megkonnyitve a munkat veluk.
A szinek fix kodokkal vannak csinalva, nem dinamikusan van elkerve. Linux terminal van alapul veve, nem tudom, pl. bsd-n lehet hogy nem teljesen jo.
A projekt tesztelve van, minden hibabejelentesnek orulok, a hrgyster kukac g mail pont com cimen varom ezeket.
- A hozzászóláshoz be kell jelentkezni
Feltaláltad a langyos vizet, meg a termcap, terminfo, curses, ncurses dolgait...?
- A hozzászóláshoz be kell jelentkezni