Основная часть вопроса в заголовке, но немного уточним:
На большинстве линуксов я могу find /usr/share/terminfo -type f
. Но на машине Solaris у меня есть рядом - этот каталог даже не существует.
Я мог бы перебрать список терминалов и сделать что-то вроде:
for TERM in xterm xtermc xterm-color xterm-256color screen rxvt
do
tput cols >/dev/null 2>/dev/null && echo "$TERM available"
done
Но это медленно. Любые варианты, чтобы обнаружить путь, используемый tput
для определения терминалов, и запустить "найти" себя?
Программа infocmp в «любой» системе, поддерживающей terminfo, показывает путь, по которому она находит описание терминала для текущего терминала. Например (в данном случае AIX):
Для ncurses это сложнее, потому что вы можете иметь несколько баз данных terminfo, и записи не обязательно должны быть отдельными файлами. Одна база данных и один файл на запись совместимости с системами Unix умолчанию используется .
-D
Вариантом для тика и infocmp (добавленных в конце 2011 года ) является одним из способов , чтобы показать дополнительную информацию. Например, на моем Debian7 я вижу это:На моей машине с FreeBSD 10 я использую хешированные базы данных:
Кроме того, можно использовать
toe
программу для создания отчета обо всех доступных записях терминала. Использование параметров-s
и-a
позволяет объединять вещи (например,conflict
программу):источник
В Linux вы можете использовать,
strace
чтобы увидеть, какие системные вызовы использует программа. Следующее перечислит все системные вызовы open (2) и отфильтрует их,sed
чтобы показать, мы надеемся, файл terminfo, используемыйtput
для преобразования возможности terminfo для текущего терминала.Обратите внимание, что это выражение sed предполагает, что ваши файлы terminfo хранятся в пути с шаблоном terminfo. Если вас это беспокоит, вы можете использовать другое предположение и выбрать последний «открытый» системный вызов.
Наконец, вы можете просто вывести список путей поиска terminfo, используя
infocmp -D
илиtic -D
. В них будут перечислены их скомпилированные пути поиска terminfo. Это те же самые пути, которые ищут проклятия.источник
Я столкнулся с той же проблемой, Zyxel NSA310
решение, которое работало для меня, было
совет был дан здесь:
https://better-coding.com/solved-xterm-256color-unknown-terminal-type/
источник