uname hat geschrieben: 18.08.2021 07:24:15
"man" mag greznwertig sein.
Für Einsteiger wären Farben bestimmt schön - sofern Einsteiger überhaupt "man" nutzen.
Profis benötigen die Farben vielleicht weniger bzw. wissen, dass man das anpassen kann.
Profis profitieren von Farben genauso.
Und bezüglich dem selber anpassen führen hier viele Wege nach Rom.
Die große Frage ist aber, wie man es richtig macht. Also welcher Weg der richtige ist. Profis machen hier auch Fehler.
Obige Lösung habe ich jetzt mal gründlicher getestet.
Aber leider macht sie doch ein paar Probleme.
Führt man nach setzen der Farben
printenv aus, dann wird auch da die Ausgabe ungewollt sehr bunt.
Das Problem dürfte sein, dass diese Config LESS_TERMCAP_* global verändert. Was nötig wäre, wäre eine Lösung, die es
auf den
man Befehl beschränkt.
Für den Befehl
ls gibt es bspw, eine eigene Umgebungsvariable LS_COLORS, die beim starten von
ls entsprechend ausgewertet wird. Dadurch bleibt die farbige Ausgabe und die dafür notwendige Einstellung der Farben auf
ls beschränkt.
Eine andere Lösung wäre, den Pager, den
man zum Anzeigen verwendet, über die Umgebungsvariable MANPAGER auf
most zu ändern, aber
most ist kein vollwertiger Ersatz zu
less und auch nicht vorinstalliert.
Also eine unschöne Lösung wenn man weiterhin
less einsetzen möchte.
Dann gibt es noch für
man die Umgebungsvaribale MANOPT, die von
man vor der Ausführung ausgewertet wird.
Allerdings scheint
man hier nur die Parameter von
man eintragen zu können, die dann
man benutzt.
Wer bspw. dauerhaft die man pages auf Englisch haben will, der muss nur die MANOPT Umgebungsvariable auf:
setzen.
Aber das hilft hier einem auch nicht weiter.
Eine andere Möglichkeit wäre ein Skript das zuerst die TERMCAP Farben setzt und dann
man mit dem anzuzeigenden Suchmuster
aufruft und dann nach beendigen von
man die TERMCAP Farben wieder zurücksetzt.
Dazu müsste das Skript das zu suchende Suchmuster an
man weitergeben.
Global einbinden könnte man das Skript dann per alias der den Namen
man kriegt. So wird das Skript aufgerufen, wenn man
man haben will.
Aber auch das ist unschön, denn es könnte ja sein, dass man
man mit mehreren Parametern starten will.
Eine richtig brauchbare Lösung die auf den Scope des
man Befehls beschränkt ist, habe ich leider aber noch nicht gefunden.
Und auch auf unix.stackexchange.com scheint es nur Workarounds zu geben die dazu, abgesehen von der Sache mit
most, keine Lösung haben.
Ein nächster Ansatz wäre beim Pager
less, den
man aufruft.
Obiges Beispiel:
Zeigt, dass
man hier
less mit Parametern aufrufen kann.
Und +Gg scheint ein Kommando zu sein, dass an
vi angelehnt ist und das auch von
less benutzt wird.
Da
less laut manpage an
more and
vi manche Befehlscodes übernommen hat.
Vielleicht könnte man über die Möglichkeiten dieses
vi Befehlscodes die Farben für
less und somit
man konfigurieren.
Stichwort Syntax Highlightning.
Aber leider kenne ich mich dafür mit
vi zu wenig aus.
Aus der manpage von
less:
Code: Alles auswählen
Commands are based on both more and vi. Commands may be preceded by a decimal number,
called N in the descriptions below. The number is used by some commands, as indicated.
Außerdem kann man mit ! an
less einen Befehl übergeben:
Code: Alles auswählen
! Shell-Befehl
ruft eine Shell auf, um den angegebenen Shell-Befehl auszuführen. Ein Prozentzeichen (%) im Befehl wird durch den Namen der aktuellen Datei er‐
setzt. Ein Rautezeichen (#) wird durch den Namen der zuletzt untersuchten Datei ersetzt. »!!« wiederholt den letzten Shell-Befehl. »!« ohne
Shell-Befehl ruft einfach eine Shell auf. Auf Unix-Systemen wird die Shell aus der Umgebungsvariablen SHELL genommen oder ist standardmäßig »sh«.
Auf MS-DOS und OS/2-Systemen ist die Shell der normale Befehlsprozessor.
Ein Versuch, das an
less über die MANPAGER Variable zu übergeben und
less ein Shellskript auswerten zu lassen
schlug allerdings fehl:
Code: Alles auswählen
export MANPAGER='less -s -M +Gg !/home/$USER/hallo_welt.sh'
Würde das wie gewünscht klappen, dann könnte man in dem Shellskript wie oben erwähnt die Änderung der Farben auf
less im Kontext eines Ausführens von
man beschränken.
Man müsste dann lediglich noch, wenn
less und somit
man beendet wird, ein weiteres Skript aufrufen, dass die Farben dann wieder zurücksetzt, sofern die gesetzten Farben nicht nur für diesen Scope gelten.
Mal ein anderes Beispiel.
grml nutzt
zsh mit vielen Features.
Warum ist "zsh" nicht Standard bei Debian?
Da kann die "Bash" einpacken.
Keine Ahnung.
Mir geht es ja jetzt nur mal um eine grundlegende und brauchbare Vorkonfiguration von man. Bei ls klappt es ja auch.
Selbst der Username und Hostname werden in der Shell farbig hervorgehoben.
grml nutzt auch
tmux (Anleitung) mit folgender
tmux.conf
Also "tmux" sollte man jedem Anwender "aufzwingen", da es eine tolle Anwendung ist.
"tmux" ist kein Standard bei Debian und muss (zum Glück) nachinstalliert werden.
tmux brauchen nur einige wenige, da man in einer Fensterverwaltung genug konsolenfenster starten kann.
Aber ein farbiges man könnte man überall gebrauchen. Davon würden sicherlich 95 % der Debiannutzer profitieren, also könnte man
dass auch gleich seitens Debian vorkonfigurieren.
Jetzt fehlt halt noch eine brauchbare technische Lösung das umzusetzen. Dann könnte man die Debianleute darauf hinweisen.
Vielleicht müsste man auch den Code von man bzw. less anpassen, damit die Ausgabe in Zukunft farbig ist.
So, wenn man den Code von man anpasst oder less einen Parameter dafür kriegt, wäre dann zumindest sichergestellt,
dass keine anderen Befehle, wie printenv davon beeinflusst werden.