Вот проблема: я хочу уметь различать, способен ли мой терминал поддерживать приличный юникод или нет, для того чтобы использовать некоторые символы или нет, во многом как взгляды, которые иногда используют цвета, а другие подчеркивают.
Мотивация возникает из-за того, что в любом виртуальном терминале я получаю приличные шрифты, но я понимаю, что базовая консоль Linux имеет набор символов из 256 или 512 одновременных символов, поэтому вы не можете ожидать полной поддержки шрифтов.
Сначала я подумал, что могу использовать $TERM
или tty, но здесь есть одна загвоздка: я тоже использую byobu, поэтому $TERM
всегда есть "screen.linux". Вывод tty также не очень показателен: /dev/pts/<some number>
как в «реальном», так и в виртуальном смысле.
$BYOBU_TTY
это также не поможет, потому что, например, это может быть, /dev/tty1
и когда сеанс открывается в Ctrl+ Alt+, F1символы не отображаются, но при присоединении к тому же сеансу из некоторого термина X они отображаются правильно и по-прежнему $BYOBU_TTY
не изменяются. Кроме того, я хотел бы быть в состоянии обнаружить это, не предполагая, есть ли Бёбу или нет.
Кроме того, локаль показывает во всех случаях en_US.UTF-8
Тем не менее, каким-то образом взгляды (чтобы назвать конкретный инструмент, который я вижу, обнаружив это), даже внутри byobu, использует различный вывод в зависимости от терминала, который я подключаю к сеансу byobu.
У меня проблемы с Google, потому что терминал и tty кажутся слишком общими терминами поиска. Самое большее, я приду к решениям, рекомендующим $TERM
или tty.
Фактический вопрос OP: какие значения Unicode поддерживает консоль Linux, и могут ли они быть обнаружены во время работы
screen
. В принципе, это можно сделать, получив карту Unicode для консоли.kbd
Дерево содержит источникgetunimap
(и его страницы руководства). Страница руководства говорит, чточто не совсем верно.
setfont
есть опция, которая делает примерно то же самое:Различия:
setfont
пишет в файл, аgetunimap
пишет в стандартный выводgetunimap
показывает символ, который будет отображен, как комментарий.Например:
против
Если вы работаете в
screen
(или, например, работаете,xterm
а не на консоли), вы получите ошибку прав доступа, которую вы можете обойти, используяsudo
.Если мне случится узнать, какой шрифт был загружен, я могу проверить это (без специальных разрешений), используя
psfgettable
, например,и посмотрите данные отображения, которые
setfont
будут использоваться для загрузки шрифта (с отображением Unicode):Оба
getunimap
иsetfont
дают данныеpsfgettable
не отсортированными , в то время как кажется, сортируются (а также объединение строк для значений Unicode, которые отображаются на тот же глиф). Так что есть различия, но информация доступна.Дальнейшее чтение (иллюстрирующее, почему вы не можете использовать
showconsolefont
для решения этой проблемы):источник
sudo
является препятствием для моего варианта использования.setfont
ничего не выводит (не создает данный файл и не выдает ошибку) в виртуальных терминалах, но работает в реальных терминалах, как и ожидалось. Это в Ubuntu 16.04Я столкнулся с этим вопросом, пытаясь выполнить то же самое, но не хотел оставлять что-либо на экране и устанавливать переменную, поэтому я добавил в сценарий оболочки, который я поставил, следующее:
источник