La majeure partie de la question est dans le titre, mais pour élaborer un peu:
Sur la plupart des Linux, je peux find /usr/share/terminfo -type f
. Mais sur la machine Solaris que j'ai à proximité - ce répertoire n'existe même pas.
Je pourrais parcourir une liste de terminaux et faire quelque chose comme:
for TERM in xterm xtermc xterm-color xterm-256color screen rxvt
do
tput cols >/dev/null 2>/dev/null && echo "$TERM available"
done
Mais c'est lent. Y a-t-il des options pour découvrir le chemin utilisé par les tput
définitions de terminal et exécuter moi-même "trouver"?
Le programme infocmp sur "n'importe quel" système supportant terminfo montre le chemin d'accès où il trouve la description du terminal pour le terminal actuel. Par exemple (AIX dans ce cas):
Pour ncurses, c'est plus compliqué, car vous pouvez avoir plusieurs bases de données terminfo, et les entrées n'ont pas besoin d'être des fichiers individuels. Une seule base de données et un fichier par entrée est la valeur par défaut , pour la compatibilité avec les systèmes Unix.
L'
-D
option pour tic et infocmp (ajoutée fin 2011 ) est un moyen d'afficher les informations supplémentaires. Par exemple, sur ma Debian7, je peux voir ceci:Sur ma machine FreeBSD 10, j'utilise des bases de données hachées:
Alternativement, on peut utiliser le
toe
programme pour produire un rapport de toutes les entrées de terminal disponibles. L'utilisation des options-s
et lui-a
permet de combiner des choses (comme leconflict
programme):la source
Sous Linux, vous pouvez utiliser
strace
pour voir quels appels système un programme utilise. Ce qui suit répertorie tous les appels système "open (2)" et les filtresed
pour afficher, espérons-le, le fichier terminfo utilisé partput
pour traduire la capacité terminfo pour le terminal actuel.Notez que cette expression sed suppose que vos fichiers terminfo sont stockés dans un chemin contenant le modèle "terminfo". Si cela vous inquiète, vous pouvez utiliser une hypothèse différente et choisir le dernier appel système "ouvert".
Enfin, vous pouvez simplement vider la liste des chemins de recherche terminfo en utilisant
infocmp -D
outic -D
. Ceux-ci répertorieront leurs chemins de recherche terminfo compilés. Ce sont les mêmes chemins parcourus par les malédictions.la source
J'étais confronté au même problème qu'un Zyxel NSA310
la solution qui a fonctionné pour moi était
des conseils ont été donnés ici:
https://better-coding.com/solved-xterm-256color-unknown-terminal-type/
la source