Hier ist das Problem: Ich möchte erkennen können, ob mein Terminal in der Lage ist, anständigen Unicode zu verwenden oder nicht, um einige Zeichen zu verwenden oder nicht, ähnlich wie bei Blicken, die manchmal Farben verwenden und andere unterstreichen.
Die Motivation entsteht, weil ich in jeder Art von virtuellem Terminal anständige Schriftarten bekomme, aber ich verstehe, dass die grundlegende Linux-Konsole einen Zeichensatz von 256 oder 512 gleichzeitigen Symbolen hat, sodass Sie keine vollständige Schriftartenunterstützung erwarten können.
Zuerst dachte ich, ich könnte $TERM
oder tty verwenden, aber hier ist der Haken: Ich verwende auch byobu, also $TERM
immer "screen.linux". Die Ausgabe von tty ist auch nicht sehr aussagekräftig: /dev/pts/<some number>
sowohl in "realer" als auch in virtueller Hinsicht.
$BYOBU_TTY
ist auch keine Hilfe, weil es zB sein kann /dev/tty1
und wenn die Sitzung in Ctrl+ Alt+ geöffnet wird, werden F1die Zeichen nicht angezeigt, aber wenn sie von einem X-Begriff an dieselbe Sitzung angehängt werden, werden sie richtig angezeigt und $BYOBU_TTY
ändern sich immer noch nicht. Außerdem möchte ich dies erkennen können, ohne anzunehmen, dass Byobu vorhanden ist oder nicht.
Außerdem zeigt das Gebietsschema in allen Fällen en_US.UTF-8 an
Trotzdem verwendet ein Blick (um ein bestimmtes Tool zu nennen, das dies erkennt), selbst innerhalb von Byobu, unterschiedliche Ausgaben, je nachdem, welches Terminal ich an die Byobu-Sitzung anschließe.
Ich habe Probleme mit Google, weil Terminal und tty zu häufig vorkommen. Ich komme höchstens zu empfohlenen $TERM
oder tty- Lösungen .
OP tatsächliche Frage lautet: Was Unicode - Werte hat die Linux - Konsole Unterstützung, und können solche erkannt werden während des Laufens
screen
. Im Prinzip kann man dies tun, indem man die Unicode-Zuordnung für die Konsole abruft.Der
kbd
Quellbaum enthältgetunimap
(und seine Handbuchseite). Die Handbuchseite sagt dasdas ist nicht genau wahr.
setfont
hat eine Option, die ungefähr das Gleiche tut:Die Unterschiede:
setfont
schreibt in eine Datei, währendgetunimap
in die Standardausgabe geschrieben wirdgetunimap
zeigt das Zeichen, das zugeordnet werden würde, als Kommentar.Zum Beispiel:
gegen
Wenn Sie ausgeführt werden
screen
(oder beispielsweise ausgeführt werdenxterm
und nicht auf der Konsole), wird ein Berechtigungsfehler angezeigt, den Sie umgehen könnensudo
.Wenn ich zufällig weiß, welche Schriftart geladen wurde, kann ich dies (ohne besondere Berechtigungen) überprüfen, indem ich
psfgettable
z.und sehen Sie sich die Zuordnungsdaten an, die
setfont
zum Laden der Schriftart verwendet werden (mit der Unicode-Zuordnung):Beide
getunimap
undsetfont
geben die Daten unsortiert an, währendpsfgettable
sie sortiert zu sein scheinen (sowie das Kombinieren von Linien für Unicode-Werte, die demselben Glyphen zugeordnet sind). Es gibt also Unterschiede, aber die Informationen sind zugänglich.Lesen Sie weiter (um zu veranschaulichen, warum Sie
showconsolefont
dieses Problem nicht lösen können):quelle
sudo
ist für meinen Anwendungsfall kein Hindernis.setfont
Gibt nichts in virtuellen Terminals aus (erstellt weder die angegebene Datei noch gibt es einen Fehler aus), sondern funktioniert erwartungsgemäß in tatsächlichen Terminals. Dies ist in Ubuntu 16.04Ich bin auf diese Frage gestoßen, als ich versucht habe, dasselbe zu erreichen, wollte aber nichts auf dem Bildschirm belassen und eine Variable festlegen lassen. Deshalb habe ich Folgendes in ein Shell-Skript eingefügt, das ich als Quelle verwende:
quelle