Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Глава 11. Русификация и шрифты

Предыдущий раздел Оглавление Следующий раздел

11.5. Кириллизация shell и других программ

К сожалению, в Linux нет единой системы работы со шрифтами. Каждую отдельную программу, каждое приложение надо отдельно настраивать для того, чтобы эта программа могла использовать шрифты True Type, Type 1 или какие-то другие, почему-либо привлекательные для вас. И в каждой программе это может делаться по-своему! Я приведу здесь краткие рекомендации по русификации некоторых наиболее употребительных программ. Эти рекомендации заимствованы из [П13.1]. Однако, перечень этот далеко не полон, так что ответы на те вопросы, которые мне не удалось осветить, ищите в источниках, ссылки на которые приведены в конце книги.

Для полноценной работы с кириллицей в текстовом режиме необходимо, чтобы программы умели интерпретировать значения 8-го бита в коде ASCII (напомним, что первоначально этот код был 7-ми битным). Вот этого давайте и добьемся.

bash

Хотя для большинства программ вполне достаточно установки LANG=ru_RU.KOI8-R чтобы начать распознавать русские буквы, многие программы, основанные на библиотеке readline (например bash) все равно считают символы с кодами больше 128 особыми META-символами (пищит при вводе).

Чтобы "отучить" библиотеку readline от этого, необходимо установить три переменные.

set meta-flag on

set convert-meta off

set output-meta on

Этого можно добиться разными способами. Поскольку вы являетесь суперпользователем своего компьютера, можно определить переменную INPUTRC=, например, создав файл /etc/profile.d/readline.sh следующего содержания:

#!/bin/bash

INPUTRC="/etc/inputrc"; export INPUTRC

и сделать этот файл исполняемым. Кроме того, прописать в файле /etc/inputrc

set meta-flag on

set convert-meta off

set output-meta on

После этого библиотека readline (и bash) начнет воспринимать русские буквы.

Еще один вариант: не задавать INPUTRC=, а прописать те же значения в файле ~/.inputrc в домашнем каталоге каждого пользователя.

См. страницу man readline .

less

Если локализация не настроена (а она обязана быть настроенной), то вывод кириллицы через less можно получить, установив переменную окружения LESSCHARSET:

export LESSCHARSET=koi8-r

Это решение годится для всех 8-битовых кириллических кодировок.

При правильно настроенной локализации указывать LESSCHARSET НЕ НАДО. Более того, в ~/.lesskey надо добавить

#env

LESSCHARSET=

чтобы программа игнорировала установку LESSCHARSET= другими "глупыми"  программами (к примеру, man). После этого надо запустить lesskey для получения бинарного файла ~/.less. В противном случае он не будет вызывать setlocale(LC_CTYPE,"") и, как следствие, не будет icase search для русских букв.

man

В последнее время появляется все больше и больше man-статей, переведенных на русский язык, но вот отобразить их не всегда удается. Для исправления этого неудобства следует поправить соответствующие строки в /usr/lib/man.config, если этот файл есть, или правильно настроить less.

nroff

Для того, чтобы через nroff можно было "пропустить"  символы кириллицы, надо использовать его с ключом -Tlatin1. Пропишите где-нибудь в стартовом скрипте (если у вас bash, то в .bashrc)

alias nroff='nroff -Tlatin1'

Просмотр некоторых файлов в mc запускается через nroff, вызов которого осуществляется по расширению имени файла. Поэтому в файле /usr/lib/mc/mc.ext следует в строке вызова nroff изменить параметр вызова с -Tascii на -Tlatin1.

ls

Если локализация настроена неправильно, то ls не будет печатать кириллические символы. В этом случае, возможно, поможет одна из следующих команд: ls -N, dir -N или ls --show-control-chars.

mc (The Midnight Commander)

Чтобы корректно отображался текст кириллицы, необходимо установить флажки в опции Полный 8-битный вывод (full 8 bits) и Полный 8-битный ввод в команде меню Настройки | Биты символов (Options | Display).

Диски Win'95 и DOS

Чтобы подмонтировать диск Windows'95 и DOS с правильной поддержкой русских букв, необходимо воспользоваться командой:

[user]$ mount -t vfat -o umask=002,noexec,gid=500,codepage=866,iocharset=koi8-r /dev/hdb1 /mnt

То есть все русские имена на диске FAT сохраняются в Codepage 866 ! Для работы этой опции ядро (>2.0.36) должно быть пересобрано с поддержкой NLS, кодовыми страницами CP866, NLS KOI8-R и, конечно же, с поддержкой VFAT.

Samba

Чтобы увидеть русские буквы в именах файлов на диске Samba, в файл /etc/smb.conf следует добавить строки:

[global]

character set = koi8-r

client code page = 866

preserve case = yes

short preserve case = yes

Первые две опции указывает внутреннюю кодировку имен файловой системы (client code page) и внешнюю кодировку пользователя (character set).

Следующие две опции указывают, что надо сохранять регистр длинных и коротких имен файлов.

rlogin

Удостоверьтесь, что shell на месте адресата установлена правильно. Если ваш rlogin не работает как надо по умолчанию, то используйте 'rlogin -8'.

Пропишите в стартовом скрипте (если вы используете bash, то это .bashrc)

alias rlogin='rlogin -8'

telnet

Если возникают проблемы с вводом русских символов, надо создать файл ~/.telnetrc со следующей строкой:

DEFAULT set outbinary

Вы можете встретить проблемы при работе в кодировке cp1251 -- не передается маленькая русская буква "я"  (ASCII-код 0xff). У протокола Telnet 0xff -- это первый символ управляющей последовательности. Дабы передать собственно "я", нужно его удваивать: 0xff, 0xff. При использовании KOI8-R такая проблема отсутствует.

IrcII

Добавить в файл конфигурации ~/.ircrc следующие строчки:

/set translation russian

/set eight_bit_characters on


Предыдущий раздел Оглавление Следующий раздел