Nästa Föregående Innehållsförteckning

6. Hur man ändrar standardfärgerna vit-på-svart i textläge

Du behöver "tala om för" koden till terminalen att du vill ha en annan default. Det finns inget standardiserat sätt att göra detta på, men i Linux har du setterm-programmet.

"setterm" använder sig av information från terminalens databas för att sätta attributen. Valet görs som

setterm -foreground black -background white -store
där "-store", förutom att ändra färgen gör den nya inställningen till default för nuvarande konsol. Det behövs då att den nuvarande konsolen (TERM enviroment-variabeln) beskrivs "bra nog" i termcap:s databas. Om setterm av någon anledning inte fungerar - här kommer några alternativ:

6.1 Xterm

En av dessa xterms bör finnas tillgänglig och åtminstone en av dem bör stöda färger.

xterm -fg white -bg blue4
color_xterm -fg white -bg blue4
color-xterm -fg white -bg blue4
nxterm -fg white -bg blue4

där 'color_xterm' stöder färgversionen av 'ls'. Detta speciella val liknar färgerna som används på en SGI.

6.2 Virtuell konsol.

Du kan modifiera kärnan en gång för alla, likväl som att använda en "run-time default" för den virtuella konsolen med en escape-sekvens. Jag rekommenderar att modifiera kärnan om du tidigare har kompilerat din egen kärna.

Källfilen till kärnan är /usr/src/linux/drivers/char/console.c på rad 1940, där du skall ändra:

        def_color       = 0x07;   /* white */
        ulcolor         = 0x0f;   /* bold white */
        halfcolor       = 0x08;   /* grey */
Jag använder blå på vit med:
        def_color       = 0x17;   /* white */
        ulcolor         = 0x1f;   /* bold white */
        halfcolor       = 0x18;   /* grey */

Siffrorna är attributkoderna angivna hexadecimalt och som används av grafik-kortet: viktigaste siffran (1:an i exemplet ovan) är bakgrunden - den minst signifikativa är förgrunden. 0 = svart, 1 = blå, 2 = grön, 3 = cyan, 4 = röd, 5 = lila, 6 = brun/gul, 7 = vit. Lägg till 8 för att få "skarpa" färger. Lägg märke till att, för det mesta, en ljus bakgrund == blinkande bokstäver, dovt färgad bakgrund. (Från sjlam1@mda023.cc.monash.edu.au).

Du kan också fixa så att du kör en viss display på valfri konsol, med en ickestandard-ANSI-sekvens (som du kan hitta om du tittar i koden till kärnan):

        ESC [ 8 ]

som gör att du får standardfärger på för- och bakgrund. Reset Attributes"-strängen (ESC [ m) väljer dessa färger istället för vita bokstäver på svart bakgrund.

Du är tvungen att "eka" den här strängen till konsolen varje gång du startar om. Beroende på vad du använder din Linux-burk till, kan många olika platser vara lämpliga.

/etc/issue

Det är här som "Welcome to Linux xx.yy" visas i Slackware, och det här är en bra plats för fristående utrustning (och blir troligtvis en pest för användare som loggar in med telnet). Den här filen skapas vid uppstart (slackware i /etc/rc.d/rc:s - Redhat i /etc/rc.d/rc.local), och du kan modifiera filen med raderna

  echo ""> /etc/issue
  echo Welcome to Linux `/bin/uname -a | /bin/cut -d\  -f3`. >> /etc/issue
till
  ESCAPE="<Ersätt med ett escape-tecken här>"
  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
Den här koden lägger prompten längst upp till vänster på skärmen, byter skärmfärgen (här vit text på blå bakgrund), sparar det här valet och rensar skärmen från allt övrigt. Modifieringen börjar fungera efter nästa uppstart. Kom ihåg att sätta in escape-tecknet i filen med C-q i Emacs eller Ctrl-v i vi, eftersom skalet som exekverar skriptet inte förstår /033 syntaxen.

/etc/profile eller .profile

  if [ "$TERM" = "console" ]; then
      echo "\033[37;44m\033[8]" #
# eller använd setterm.
      setterm -foreground white -background blue -store
  fi

/etc/login or .login

  if ( "$TERM" == "console" ) then
    echo "\033[37;44m\033[8]"  
# eller använd setterm.
      setterm -foreground white -background blue -store
  endif

6.3 "Remote login"

Du bör kunna använda setterm-programmet som visas här ovan. Åter igen, det här kräver att fjärrmaskinen känner till din terminal, och att terminalemulatorn som sköter inloggningen stöder färg. Enligt min erfarenhet är den bästa vt100-emulatorn som finns tillgänglig för olika plattformar:

Se http://www.columbia.edu/kermit/ för detaljer om Kermit.


Nästa Föregående Innehållsförteckning