Переключить кодирование терминала с помощью команды

Стефан привел меня по правильному пути. Это будет работать на любой системе 12.04 и новее.

Вашей файловой системе также потребуется расширенная поддержка атрибутов. Если вы используете EXT4, все в порядке, если вы используете EXT3, вам необходимо убедиться, что ваша файловая система смонтирована с атрибутом user_xattr.

Вот как я настроил его на клиенте машине, вам не нужно ничего делать на стороне сервера.

Сначала установите демон пространства пользователя: sudo apt-get install cachefilesd Затем включите его, отредактировав /etc/default/cachefilesd и изменив строку выполнения на RUN=yes Убедитесь, что ваше крепление NFS в /etc/fstab имеет параметр fsc. Не забудьте перемонтировать его после внесения изменений. Вот мой отрывок (измените ваши потребности): 192.168.1.115:/home/jorge /home/jorge/Backup nfs fsc Запустите службу: sudo /etc/init.d/cachefilesd start

Конфигурация кеша выполнена в /etc/cachefilesd.conf, см. Ссылки на параметры параметров.

Ссылки:

Журнал Linux /usr/share/doc/cachefilesd/howto.txt.gz /usr/share/doc/cachefilesd/README.gz Как включить расширенные атрибуты на ext4?
22
задан 14 December 2011 в 19:17

6 ответов

Вы ищете luit, который предназначен для этой цели:

$ luit -encoding ISO-8859-1 ssh remote.host

Он преобразует вывод команды ssh в UTF-8, чтобы вы не Не нужно менять кодировку терминала.

17
ответ дан 25 May 2018 в 16:00
  • 1
    Это верно. Тем не менее, я приземлился здесь, ища этот бит с man-страницы luit: «Luit обычно называется прозрачным терминальным эмулятором». Таким образом, для тех, кто прибывает сюда, потому что вы получаете неправильную кодировку, проходящую через ваш терминал, нормальный способ исправить это - изменить кодировку через эмулятор терминала. – joseph_morris 23 May 2014 в 05:40
  • 2
    @joseph_morris позвольте мне указать вам на третий абзац ответа на вопрос. OP сделал знать, как изменить кодировку, используя команды меню эмулятора терминала (который вы называете «нормальным»), но он искал альтернативу CLI. – törzsmókus 24 May 2014 в 20:01
  • 3
    Правильно, поэтому я начал с " Это правильно. & Quot; Однако эта страница теперь является одним из лучших обращений к терминальной кодировке », и я подумал, что бит документации luit будет полезен для других, которые приходят сюда, пытаясь ответить« Почему моя терминальная кодировка испортилась? ». - и что это кодирование обычно изменяется в эмуляторе, а не в CLI. – joseph_morris 25 May 2014 в 12:16
  • 4
    ах, теперь я вижу вашу мысль. – törzsmókus 26 May 2014 в 13:48

Сначала отредактируйте текущие локали в вашем любимом редакторе

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

Надеюсь, что работает

4
ответ дан 25 May 2018 в 16:00

Терминал Gnome использует gconf для сохранения настроек. К ним можно управлять с помощью gconftool. Итак, вы можете использовать:

gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding ISO-8859-1

Я тестировал это 12.04. По какой-то причине меню ("Terminal"->"Set Character Encoding..."), похоже, не обновляется в реальном времени, но фактическая кодировка символов корректно обновляется.

4
ответ дан 25 May 2018 в 16:00
  • 1
    но это изменяет кодировку по умолчанию для всех терминалов, а не только для запуска сценария подключения ssh. – törzsmókus 7 May 2012 в 18:47

Я не знаю, как его протестировать, но с 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, path, method и arguments.

2
ответ дан 25 May 2018 в 16:00

Вот еще одно решение, которое я использовал для изменения профиля (для фона) при подключении к производственному серверу. Он включает в себя xdotool.

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

$ xdotool key alt+t Down c Down Return

Он активирует первую кодировку символов. Добавьте еще Down ключи до Return, чтобы выбрать другие.

Примечание: для ssh вы также можете использовать файл ~/.ssh/config для настройки псевдонимов на свои серверы.

1
ответ дан 25 May 2018 в 16:00
  • 1
    Извините - я хотел дать вам рецензию, но нажал неправильный пост = ( – Tomas Lycken 15 April 2012 в 21:18
  • 2
    так как меню gnome-терминала не гарантируется, что оно не изменится, я считаю это очень хрупким взломом, который может быть правильным , когда фактического решения нет. , но есть один . – törzsmókus 7 May 2012 в 18:45

В xterm измените кодировку с помощью управляющих последовательностей. Например, в bash вы получаете набор символов UTF-8, запустив:

echo -n $'\e%G'

Кодирование ISO 8859-1 доступно при запуске:

echo -n $'\e%@'
1
ответ дан 25 May 2018 в 16:00

Другие вопросы по тегам:

Похожие вопросы: