Kolory na terminalach Linux-owych. Autor: Thorbjørn Ravn Andersen, v1.4, 7 Sierpnia 1997 Wersja polska: Bartosz Maruszewski. v1.3, 5 Listopada 1997 Większość dystrybucji Linux-a ma polecenie '`. Dokument ten został napisany w standardzie ISO-8859-2.` 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. Szybki start dla niecierpliwych.

Jeśli masz ~/.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. 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 (`% 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 `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 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). 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 -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: 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. 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 ). 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 `/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="" 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 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 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: Przejrzyj 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: . 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: ‐‐

Thorbjørn Ravn Andersen 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: Na pewno znajdziesz tu jakieś niejasne i niepolskie konstrukcje. Jeśli wpadniesz na lepszy pomysł daj mi znać. Oficjalną stroną tłumaczeń HOWTO jest Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem w katalogu `/pub/Linux/JTZ/`. Przetłumaczone przeze mnie dokumenty znajdują się także na 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 `listproc@ippt.gov.pl`