Der Großteil der Frage ist im Titel, aber um es ein wenig zu erläutern:
Auf den meisten Linuxen kann ich find /usr/share/terminfo -type f
. Aber auf einem Solaris-Computer in der Nähe gibt es dieses Verzeichnis noch nicht einmal.
Ich könnte eine Liste von Terminals durchlaufen und Folgendes tun:
for TERM in xterm xtermc xterm-color xterm-256color screen rxvt
do
tput cols >/dev/null 2>/dev/null && echo "$TERM available"
done
Aber es ist langsam. Gibt es Optionen, um den Pfad zu ermitteln, der von tput
Terminaldefinitionen verwendet wird , und um "find myself" auszuführen?
Das infocmp-Programm auf "jedem" System, das terminfo unterstützt, zeigt den Pfadnamen an, in dem es die Terminalbeschreibung für das aktuelle Terminal findet. Zum Beispiel (AIX in diesem Fall):
Für ncurses ist es komplizierter, da Sie mehrere Terminfo-Datenbanken haben können und die Einträge keine einzelnen Dateien sein müssen. Eine einzelne Datenbank und eine Datei pro Eintrag sind aus Gründen der Kompatibilität mit Unix-Systemen die Standardeinstellungen .
Die
-D
Option für tic und infocmp (hinzugefügt Ende 2011 ) ist eine Möglichkeit, die zusätzlichen Informationen anzuzeigen . Auf meinem Debian7 kann ich zum Beispiel Folgendes sehen:Auf meinem FreeBSD 10-Rechner verwende ich Hash-Datenbanken:
Alternativ kann das
toe
Programm verwendet werden, um einen Bericht aller verfügbaren Terminaleinträge zu erstellen. Mit den Optionen-s
und-a
können Dinge kombiniert werden (wie dasconflict
Programm):quelle
Unter Linux können Sie
strace
sehen, welche Systemaufrufe ein Programm verwendet. Das Folgende listet alle "open (2)" - Systemaufrufe auf und filtert sie durchsed
, um hoffentlich die Terminfo-Datei anzuzeigen, dietput
zum Übersetzen der Terminfo-Fähigkeit für das aktuelle Terminal verwendet wird.Beachten Sie, dass dieser sed-Ausdruck davon ausgeht, dass Ihre terminfo-Dateien in einem Pfad mit dem Muster "terminfo" gespeichert sind. Wenn Sie das beunruhigen, könnten Sie eine andere Annahme treffen und den letzten "offenen" Systemaufruf auswählen.
Abschließend können Sie die Liste der Terminalsuchpfade mit
infocmp -D
oder ausgebentic -D
. Diese listen ihre kompilierten terminfo-Suchpfade auf. Dies sind die gleichen Pfade, die von Flüchen durchsucht werden.quelle
Ich hatte das gleiche Problem mit einem Zyxel NSA310
Die Lösung, die für mich funktionierte, war
Ratschläge wurden hier gegeben:
https://better-coding.com/solved-xterm-256color-unknown-terminal-type/
quelle