Один из серверов, на котором я довольно часто ssh
использовал западную кодировку вместо utf-8 (и я никак не могу это изменить).
Я начал писать сценарий bash для подключения к этому серверу, поэтому мне не придется каждый раз набирать полный адрес, но я хотел бы улучшить этот сценарий, чтобы он также изменял кодировку окна терминала правильно.
Изменение, которое мне нужно сделать, можно выполнить с помощью мыши, перейдя в «Терминал» -> «Установить кодировку символов ...» -> «Западный (ISO-8859-1)». Есть ли команда терминала, которая делает то же самое для текущего окна / экрана терминала?
Чтобы уточнить:
Я , а не Я заинтересован в способах переключения локали системы на удаленном сайте - эта система управляется кем-то другим, и я понятия не имею, что может зависеть от кодировки latin-1. То, что я хочу сделать, - это позволить этому окну терминала на моей стороне переключить кодировку символов на вышеуказанную, точно так же, как я могу сделать это с помощью мыши и меню.
Вы ищете luit
, который предназначен для этой цели:
$ luit -encoding ISO-8859-1 ssh remote.host
Он преобразует вывод команды ssh в UTF-8, поэтому вы не сможете нужно изменить кодировку терминала.
Сначала отредактируйте текущие локали в вашем любимом редакторе
sudo gedit /var/lib/locales/supported.d/local
, например,
en_GB.UTF-8 UTF-8
en_US.UTF-8 UTF-8
en_GB.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1
, затем выполните sudo dpkg-reconfigure locales
, затем установите терминал с помощью LANG=en_GB.ISO-8859-1
.
Надеюсь, что работает
Gnome Terminal использует gconf для сохранения настроек. Этим можно манипулировать с помощью gconftool
. Итак, вы можете использовать:
gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding ISO-8859-1
Я тестировал это 12.04. По какой-то причине меню ("Terminal"->"Set Character Encoding..."
) не обновляется в режиме реального времени, но фактическая кодировка символов корректно обновляется.
Вот еще одно решение, которое я использовал для изменения профиля (для цвета фона) при подключении к производственному серверу. Он включает в себя xdotool
.
xdotool
будет имитировать нажатия клавиш, необходимые для выбора нужного пункта меню. Попробуйте сначала с помощью клавиатуры, затем запишите последовательность:
$ xdotool key alt+t Down c Down Return
Это активирует первую кодировку символов. Добавьте еще Down
клавиш перед Return
, чтобы выбрать другие.
Примечание: для ssh
вы также можете использовать файл ~/.ssh/config
для настройки псевдонимов для ваших серверов.
В xterm
измените кодировку, используя управляющих последовательностей . Например, в bash
вы получите набор символов UTF-8, выполнив:
echo -n Кодирование ISO 8859-1 доступно при запуске:
echo -n \e%@'
\e%G'
Кодирование ISO 8859-1 доступно при запуске:
echo -n \e%@'
Я не знаю, как протестировать его, но с Konsole на Kubuntu я могу сделать следующее:
1) Найдите применение, зарегистрированное к dbus
$ qdbus
Я использую konsole
так простое qdbus | grep kons
дает мне org.kde.konsole
2) Найдите текущие сессии в Konsole
$ qdbus org.kde.konsole | grep Sessions
/Sessions
/Sessions/1
$ set | grep -i sessions
KONSOLE_DBUS_SESSION=/Sessions/1
3) Найдите полезные методы
$ qdbus org.kde.konsole /Sessions/1 | grep -i codec
method QByteArray org.kde.konsole.Session.codec()
method bool org.kde.konsole.Session.setCodec(QByteArray codec)
4) Проверьте текущее кодирование
$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
UTF-8
5) Кодирование набора
$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.setCodec ISO-8859-1
true
6) Проверьте текущее кодирование
$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
ISO-8859-1
Ubuntu будет иметь подобную терминальную программу, но необходимо будет сделать некоторое приведение в замешательство сами с корректным servicename, путем, методом и аргументами.