Kolory na terminalach Linux-owych.
Kolory na terminalach Linux-owych.
Autor: Thorbjørn Ravn Andersen,
ravn@dit.ou.dk
v1.4, 7 Sierpnia 1997
Wersja polska: Bartosz Maruszewski
B.Maruszewski@jtz.org.pl.
v1.3, 5 Listopada 1997
Większość dystrybucji Linux-a ma polecenie 'ls'
służące do wyświetlania zawartości katalogu, które można znacznie
uatrakcyjnić używając różnych kolorów, ale skonfigurowanie tego
zgodnie z własnymi upodobaniami 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 oprogramowania nie zawartego w
dystrybucjach Slackware czy RedHat, którego można użyć na
większości systemów unix-owych.
Wersja HTML (w oryginale) jest także dostępna
na mojej stronie WWW.
Dokument ten został napisany w standardzie ISO-8859-2.
1. Wprowadzenie.
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.
2. Szybki start dla niecierpliwych.
Jeśli masz nową 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.
3. Czy ja to w ogóle mam?
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 nie 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.
4. Z jakich kolorów można wybierać ?
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
5. Jak skonfigurować kolory dla ls?
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).
6. Jak skonfigurować inny standard tekstowy niż białe-na-czarnym ?
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:
6.1 Xterm.
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.
6.2 Konsole wirtualne.
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).
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:
/etc/issue
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.
/etc/profile lub .profile.
if [ "$TERM" = "console" ]; then
echo "\033[37;44m\033[8]" #
# albo użyj setterm
setterm -foreground white -background blue -store
fi
/etc/login lub .login
if ( "$TERM" == "console" ) then
echo "\033[37;44m\033[8]"
# albo użyj setterm
setterm -foreground white -background blue -store
endif
6.3 Logowanie zdalne.
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/
7. Oprogramowanie.
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.gzPrzejrzyj dokumentację jeśli używasz starszej wersji X-ów.
Uwaga: Nie próbowałem tego samemu !!!
'ls' jest w pakiecie 'fileutils'
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
8. Od tłumacza.
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.plNa 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. 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
Wyszukiwarka