Kolory na terminalach Linux-owych. Autor: Thorbjørn Ravn Andersen, ravn@dit.ou.dk v1.4, 7 Sierpnia 1997 WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkiiBB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll.. v1.3, 5 Listopada 1997 Wiêkszo¶æ dystrybucji Linux-a ma polecenie 'ls' s³u¿±ce do wy¶wietla nia zawarto¶ci katalogu, które mo¿na znacznie uatrakcyjniæ u¿ywaj±c ró¿nych kolorów, ale skonfigurowanie tego zgodnie z w³asnymi upodoba niami mo¿e nie byæ tak± ³atw± spraw±. Dokument ten opisuje ró¿ne aspekty i podej¶cia ustawiania polecenia 'ls' przez konfigurowanie istniej±cego oprogramowania plus lokalizacja alternatywnego opro gramowania nie zawartego w dystrybucjach Slackware czy RedHat, którego mo¿na u¿yæ na wiêkszo¶ci systemów unix-owych. Wersja HTML (w orygi nale) jest tak¿e dostêpna na mojej stronie WWW <http://www.dit.ou.dk/~ravn/colour-ls>. Dokument ten zosta³ napisany w standardzie ISO-8859-2. ______________________________________________________________________ Spis tre¶ci 1. Wprowadzenie. 2. Szybki start dla niecierpliwych. 3. Czy ja to w ogóle mam? 4. Z jakich kolorów mo¿na wybieraæ ? 5. Jak skonfigurowaæ kolory dla ls? 6. Jak skonfigurowaæ inny standard tekstowy ni¿ bia³e-na-czarnym ? 6.1 Xterm. 6.2 Konsole wirtualne. 6.2.1 /etc/issue 6.2.2 /etc/profile lub .profile. 6.2.3 /etc/login lub .login 6.3 Logowanie zdalne. 7. Oprogramowanie. 8. Od t³umacza. ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee.. W ostatnich latach kolorowe monitory sta³y siê bardzo popularne, i u¿ytkownicy zaczynaj± to wykorzystywaæ przez u¿ywanie programów, które wykorzystuj± kolory do wizualizacji ró¿nych szczegó³ów takich jak s³owa kluczowe w jêzykach programowania czy podkre¶lenie s³ów ¼le napisanych. Poniewa¿ konsola Linux-owa obs³uguje kolory, oryginalna wersja GNU ls zosta³a szybko zmodyfikowana, aby wy¶wietlaæ kolorowe informacje i program ten zosta³ do³±czony do dystrybucji Slackware ok. wersji 2.0. Ulepszone wersje tych ³at wesz³y w sk³ad standardowej dystrybucji GNU ls i dlatego powinny byæ czê¶ci± wszystkich nowych dystrybucji Linux- a. Wersja ta jest w g³ównej mierze przepisan± wersj± pierwotn± zawieraj±c± informacje na temat xterminala i ³atania j±dra. Informacja zawarta w tym dokumencie zosta³a sprawdzona na dystrybucji RedHat 4.1 i zosta³a oryginalnie skompilowana na dystrybucji Slackware 2.0.2 i j±drze w wersi 1.1.54. Informacje na temat ³aty zosta³y uzyskane z Dystrybucji Slackware 2.2.0 z j±drem 1.2.13 i pow³ok± tcsh jako domy¶ln± oraz pó¼niej sprawdzona na j±drze 2.0.27. Je¶li u¿ywasz jakiej¶ innej konfiguracji czy wersji unix-a, to bêdê wdziêczny za info na temat systemu operacyjnego i wersji oraz czy kolory s± dostêpne jako standardowe. 22.. SSzzyybbkkii ssttaarrtt ddllaa nniieecciieerrpplliiwwyycchh.. Je¶li masz _n_o_w_± dystrybucjê Linux-a, to zmodyfikuj pliki w swoim katalogu domowym tak jak to pokazano. Efekt bêdzie widoczny po ponownym zalogowaniu siê. ~/.bashrc: alias ls="ls --color" ~/.cshrc: alias ls 'ls --color' I to wszystko! Mo¿esz tak¿e zrobiæ swój plik .colourrc, ¿eby mieæ swoje kolory (``dircolors -p >$HOME/.colourrc''). Jest tam du¿o komentarzy, wiêc nie powiniene¶ mieæ problemów z modyfikacjami. Po ustawieniu wszystkich kolorów piszesz ``eval `dircolors $HOME/.colourrc`'' ¿eby ustawienia zadzia³a³y. 33.. CCzzyy jjaa ttoo ww ooggóóllee mmaamm?? Przede wszystkim powiniene¶ wiedzieæ czy masz wersjê ls, która umie kolorowaæ. Spróbuj wydaæ takie polecenie na konsoli Linux-owej (chocia¿ na xterm-ie te¿ powinno siê udaæ): % ls --color (% jest tu znakiem zachêty systemu). Je¶li dostaniesz komunikat o b³êdzie mówi±cy, ¿e ls nie rozumie tej opcji, to musisz zainstalowaæ nowsz± wersjê pakietu GNU fileutils. Je¶li nie masz odpowiedniego pakietu aktualizacyjnego dla swojej dystrybucji, to ¶ci±gnij ostatni± wersjê z najbli¿szego ci lustra GNU i zainstaluj bezpo¶rednio ze ¼ród³a. Je¶li _n_i_e dosta³e¶ komunikatu o b³êdzie, to masz ls, które rozumie to polecenie. Niestety niektóre wcze¶niejsze wersje zawarte w dystrybucji Slackware (i mo¿liwe, ¿e w innych) mia³y b³êdy. ls zawarte w dystrybucji RedHat 4.1 jest w wersji 3.13, która jest w porz±dku. % ls --version ls - GNU fileutils-3.13 Je¶li uruchomi³e¶ polecenie ``ls -- color'' na konsoli tekstowej Linux-a, to rezultat powienien byæ pokolorowany zgodnie z domy¶lnymi ustawieniami i mo¿esz teraz zdecydowaæ czy jest co¶ co chcesz zmieniæ czy nie. Je¶li uruchomi³e¶ je w xterm-ie, to mog³e¶ lub nie - zauwa¿yæ zmianê w kolorach. W przeciwieñstwie do ls, oryginalny program xterm nie obs³ugiwa³ kolorów dla programów uruchamianych w nim, ale ostatnie wersjê to robi±. Je¶li twój xterm nie obs³uguje kolorów, to powiniene¶ zdobyæ nowsz± wersjê tak jak to opisano na koñcu tego dokumentu. W miêdzyczasie prze³±cz siê na tryb tekstowy i pracuj tam. 44.. ZZ jjaakkiicchh kkoolloorróóww mmoo¿¿nnaa wwyybbiieerraaææ ?? Ten skrypt (dziêki dla wielu tych, którzy przys³ali mi wersjê bash) pokazuje wszystkie standardowe kombinacje kolorów na bie¿±cej konsoli. Je¶li ¿adne kolory sie nie pojawi±, oznacza to, i¿ twoj± konsola nie obs³uguje ANSI. #!/bin/bash # Wy¶wietl kolory ANSI. # esc="\033[" echo -n " _ _ _ _ _40 _ _ _ 41_ _ _ _42 _ _ _ 43" echo "_ _ _ 44_ _ _ _45 _ _ _ 46_ _ _ _47 _" for fore in 30 31 32 33 34 35 36 37; do line1="$fore " line2=" " for back in 40 41 42 43 44 45 46 47; do line1="${line1}${esc}${back};${fore}m Normal ${esc}0m" line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m" done echo -e "$line1\n$line2" done Numer koloru pierwszego planu jest pokazany po lewej stronie, a t³a - w prostok±cie. Je¶li chcesz znaki jaskrawe dodajesz "1" do parametrów, tak ¿e jasny niebieski na bia³ym to: "37;44;1". Ca³a sekwencja selekcji to: ESC [ 3 7 ; 4 4 ; 1 m. Uwaga: T³o w chwili obecnej nie mo¿e byæ jaskrawe, wiêc nie mo¿esz mieæ ¿ó³tego (jaskrawy br±zowy) jako co¶ innego ni¿ pierwszy plan. Limit ten wynika ze sprzêtu. The colours are: 0 - black 4 - blue 3# is foreground 1 - red 5 - magenta 4# is background 2 - green 6 - cyan 3 - yellow 7 - white ;1 is bold 55.. JJaakk sskkoonnffiigguurroowwaaææ kkoolloorryy ddllaa llss?? Je¶li chcesz zmodyfikowaæ standardowe kolory, to potrzebujesz swojej osobistej kopii w swoim katalogu domowym, co uzyskasz przy pomocy polecenia: % cd ; dircolors -p > .coloursrc Po modyfikacji tego dobrze skomentowanego pliku musisz wczytaæ go do zmiennej ¶rodowiskowej LS_COLORS, co mo¿na zwykle zrobiæ poleceniem: eval `dircolors .colourrc` Musisz umie¶ciæ tê liniê w swoim .bashrc (.cshrc, .tcshrc) (w zale¿no¶ci od twojej pow³oki), aby robiæ to automatycznie przy ka¿dym logowaniu siê. Wiêcej szczegó³ów znajdziesz w stronie podrêcznika man dircolors(1). 66.. JJaakk sskkoonnffiigguurroowwaaææ iinnnnyy ssttaannddaarrdd tteekkssttoowwyy nnii¿¿ bbiiaa³³ee--nnaa--cczzaarrnnyymm ?? Bêdziesz musia³ przekazaæ sterownikowi twojego terminala kod, który chcesz mieæ jako domy¶lny. Nie ma standardowego sposobu, aby to zrobiæ, ale w przypadku Linux-a masz program setterm. "setterm" u¿ywa informacji zawartych w bazie danych o terminalach, aby ustawiæ atrybuty. Tak siê wybiera: setterm -foreground black -background white -store gdzie -store poza w³a¶ciw± zmian± powoduje, ¿e ustawienia staj± siê tak¿e domy¶lne dla bie¿±cej konsoli. Wymaga to, aby bie¿±cy terminal (zmienna ¶rodowiskowa TERM) by³ opisany "wystarczaj±co dobrze" w bazie danych "termcap". Je¶li setterm z jakich¶ powodów nie dzia³a, to tu jest kilka alternatyw: 66..11.. XXtteerrmm.. Jeden z tych Xterminali powinien byæ dostêpny i przynajmniej jeden z nich obs³uguje kolory. xterm -fg white -bg blue4 color_xterm -fg white -bg blue4 color-xterm -fg white -bg blue4 nxterm -fg white -bg blue4 gdzie 'color_xterm' obs³uguje kolorow± wersjê 'ls'. Ten konkretny wybór przypomina kolory u¿ywane na SGI. 66..22.. KKoonnssoollee wwiirrttuuaallnnee.. Mo¿esz zmodyfikowaæ j±dro raz na zawsze, tak samo jak udostêpniaj±c standard podczas dzia³ania dla konsol wirtualnych przez sekwencjê ze znakiem ESC. Je¶li skompilowa³e¶ swoje w³asne j±dro to zalecam modyfikacjê j±dra. Plik ze ¼róde³ j±dra, który powiniene¶ zmodyfikowaæ oko³o linii 1940, to /usr/src/linux/drivers/char/console.c def_color = 0x07; /* white */ ulcolor = 0x0f; /* bold white */ halfcolor = 0x08; /* grey */ Ja u¿ywam bia³ego na niebieskim: def_color = 0x17; /* white */ ulcolor = 0x1f; /* bold white */ halfcolor = 0x18; /* grey */ Liczby to kody atrybutów w postaci szesnastkowej u¿ywane przez kartê graficzn±: najbardziej znacz±ca cyfra ("1" w przyk³adzie powy¿ej) jest t³em; najmniej znacz±ca - pierwszym planem. 0=czarny, 1=niebieski 2=zielony, 3=jasno-niebieski, 4=czerwony, 5=purpurowy, 6=br±zowy/¿ó³ty, 7=bia³y. Dodaj 8, aby uzyskaæ kolory jaskrawe. Zauwa¿, ¿e w wiêkszo¶ci przypadków jaskrawe t³o = mrugaj±ce znaki, matowe t³o. (Od sjlam1@mda023.cc.monash.edu.au <mailto:sjlam1@mda023.cc.monash.edu.au>). Mo¿esz tak¿e dostarczyæ nowy standard podczas dzia³ania dla wirtualnych konsol, na bazie na-ekran z niestandardowymi sekwencjami ANSI (znalaz³em podczas przgl±dania ¼róde³ j±dra) ESC [ 8 ] która ustawia domy¶lne kolory na bie¿±ce t³o i pierwszy plan. Wtedy ³añcuch resetuj±cy atrybuty (ESC [ m) wybiera te kolory zamiast bia³ego i czarnego. W³a¶ciwie bêdziesz musia³ wys³aæ ten ³añcuch na konsolê poleceniem echo za ka¿dym razem kiedy restartujesz komputer. Zale¿nie od tego do czego u¿ywasz swojego Linux-a, mo¿e byæ kilka odpowiednich miejsc: 66..22..11.. //eettcc//iissssuuee To jest miejsce, gdzie wy¶wietla siê komunikat "Welcome to Linux xx.yy", i jest to dobry wybór dla komputera, na którym pracujesz tylko ty. (Przypuszczalnie bêdzie zmor± dla u¿ytkowników loguj±cych siê zdalnie przy pomocy telnet-a). Plik ten jest tworzony podczas startu (Slackware w /etc/rc.d/rc.S; RedHat w /etc/rc.d/rc.local), i powiniene¶ zmodyfikowaæ linie wygl±daj±ce mniej wiêcej tak: echo ""> /etc/issue echo Welcome to Linux /bin/uname -a | /bin/cut -d\ -f3. >> /etc/issue na: ESCAPE="<wstaw tu znak escape>" echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue echo Welcome to Linux /bin/uname -a | /bin/cut -d\ -f3. >> /etc/issue Ten kod spowoduje przesuniêcie kursora na pocz±tek strony, ustawienie koloru (tutaj: bia³y na niebieskim), zapisanie tego wyboru i wyczyszczenie reszty ekranu. Modyfikacja zadzia³a przy nastêpnym starcie systemu. Zapamiêtaj, aby wpisaæ kod klawisza ESC przy pomocy Ctrl-Q w emacs-ie, Ctrl-V w vi lub `Esc w joe, bo wygl±da na to, ¿e pow³oka, w której siê uruchamia ten skrypt nie rozumie sekwencji: /033. 66..22..22.. //eettcc//pprrooffiillee lluubb ..pprrooffiillee.. if [ "$TERM" = "console" ]; then echo "\033[37;44m\033[8]" # # albo u¿yj setterm setterm -foreground white -background blue -store fi 66..22..33.. //eettcc//llooggiinn lluubb ..llooggiinn if ( "$TERM" == "console" ) then echo "\033[37;44m\033[8]" # albo u¿yj setterm setterm -foreground white -background blue -store endif 66..33.. LLooggoowwaanniiee zzddaallnnee.. Powiniene¶ byæ w stanie u¿yæ setterm tak jak to by³o pokazane wy¿ej. Jeszcze raz: wymaga to, aby zdalny komputer wiedzia³ wystarczaj±co du¿o na temat twojego terminala i ¿eby emulator terminala, przy pomocy którego siê logujesz, obs³ugiwa³ kolory. Z moich do¶wiadczeñ wynika, ¿e najlepszymi emulatorami vt100 dostêpnymi obecnie na inne platformy to: · MS-DOS: MS-Kermit (darmowy, nie jest prod. Microsoftu) · Windows 95/NT: Kermit/95 (shareware) · OS/2: Kermit/95 (shareware). Zauwa¿ jednak, ¿e standardowy telnet rozumie kolory i mo¿na go ustawiæ lokalnie. Szczegó³y na temat Kermita znajdziesz na <http://www.columbia.edu/kermit/> 77.. OOpprrooggrraammoowwaanniiee.. Wszystkie informacje opisane tutaj zak³adaj± instalacjê GNU/Linux-a. Je¶li masz co¶ innego (jak np. Sun-a z X-ami czy co¶ takiego), to mo¿esz zdobyæ i samemu sobie skompilowaæ programy. Kolorowa wersja xterm-a jest oparta na standardowych ¼ród³ach xterm-a z ³at± dostêpn± na ka¿dym serwerze X11R6. Xterm dystrybuowany wraz z R6.3 podobno ma natywn± obs³ug± kolorów, ale nie by³ przeze mnie testowany. Na przyk³ad tutaj: color-xterm-R6pl5-patch.gz Przejrzyj dokumentacjê je¶li u¿ywasz starszej wersji X-ów. Uwaga: Nie próbowa³em tego samemu !!! Mo¿na go pobraæ z serwera: ftp.icm.edu.pl. We¼ wersjê co najmniej 3.13. Bêdziesz jeszcze potrzebowaæ ³aty, któr± mo¿esz pobraæ z tego samego katalogu, a nazywa siê ona "color-ls-3.12.0.3.patch.gz" Osobi¶cie uda³o mi siê skompilowaæ color-ls na Solaris-ie, SunOS-ie i Irix-ie. By³bym wdziêczny za wszelki odzew na temat tego tekstu. Mój adres pocztowy: ravn@dit.ou.dk -- Thorbjørn Ravn Andersen 88.. OOdd tt³³uummaacczzaa.. T³umaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Je¶li znalaz³e¶ jakie¶ ra¿±ce b³êdy ortograficzne, gramatyczne, sk³adniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl Na pewno znajdziesz tu jakie¶ niejasne i niepolskie konstrukcje. Je¶li wpadniesz na lepszy pomys³ daj mi znaæ. Oficjaln± stron± t³umaczeñ HOWTO jest http://www.jtz.org.pl/ Aktualne wersje przet³umaczonych dokumentów znajduj± siê na tej¿e stronie. Dostêpne s± tak¿e poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/. Przet³umaczone przeze mnie dokumenty znajduj± siê tak¿e na mojej stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> S± tam te¿ odwo³ania do Polskiej Strony T³umaczeniowej. Kontakt z nasz± grup±, grup± t³umaczy mo¿esz uzyskaæ poprzez listê dyskusyjn± jtz@ippt.gov.pl. Je¶li chcesz sie na ni± zapisaæ, to wy¶lij list o tre¶ci subscribe jtz Imiê Nazwisko na adres majordomo@ippt.gov.pl