Stellen Sie sicher, dass die meisten Pager die Farben der Standardeingabe richtig verarbeiten

10

Wie kann ich den mostPager dazu bringen, Farben in Text, der von der Standardeingabe empfangen wurde, richtig anzuzeigen?

Hinweis: Ich bin mir nicht sicher, ob es sich um einen Fehler handelt most.

Ich habe nicht das gleiche Problem mit lessund morenur mit most, was ansonsten gut als Pager funktioniert, der von verwendet wird man.

Ich poste kein Bild und lade Leute ein, dies zu versuchen (nur wenn Sie es mostinstalliert haben):

$ command apropos zip | command grep --color=always zip | command less
$ command apropos zip | command grep --color=always zip | command more
$ command apropos zip | command grep --color=always zip | command most

lessund moreFarben richtig anzeigen, während mostFarben mit zusätzlichem "Müll" angezeigt werden, der ^[[Kalle farbigen Textbereiche umschließt.

Überraschenderweise ist das in Ordnung:

$ (export PAGER=most; command man zip)

Vermisse ich etwas (die Handbuchseite für mosthat nicht geholfen), missbrauche den Befehl oder ist dies etwas, das ich als Fehler melden sollte?

Ein Hinweis zu less(Update):

Wie Sparhawk in einem Kommentar erwähnt hat, lessfunktioniert es auch nicht, wenn nicht die Option -R(oder --RAW-CONTROL-CHARS) oder -r(oder --raw-control-chars) angegeben ist, die auch in der LESSUmgebungsvariablen festgelegt werden kann.

Und tatsächlich habe ich zuerst nach einer ähnlichen Option gesucht most(aber keine gefunden).

Aktualisieren

Alle haben Probleme mit farbigem UTF-8-codiertem Text, nicht nur most. In meinem Fall ist das Terminal damit einverstanden, das ist also nicht das Terminal. Der gleiche ungefärbte UTF-8-Text ist für alle drei Pager in Ordnung, daher ist dies nicht die Codierung der Zeichen.

Hibou57
quelle
1
FWIW lessfunktioniert bei mir nicht. Ich brauche less -R.
Sparhawk
@Sparhawk, ja, sorry, ich habe vergessen, dass ich das in meinem Profil habe : export LESS="--hilite-search --LINE-NUMBERS --raw-control-chars". Ich dachte, es gäbe eine ähnliche Option für most, aber auf der Handbuchseite wird so etwas nicht erwähnt. Hinweis: Ich werde meinen Beitrag bearbeiten, um Informationen zur LESSUmgebungsvariablen zu erhalten.
Hibou57

Antworten:

1
man grep 2>/dev/null | 
GREP_COLORS=$(man grep 2>/dev/null | 
grep '^ *ms=01;31' -m1):ne \
grep '^ *GREP_COLORS *$\|^ *ne ' -A9 --color=always | 
most

Funktioniert bei mir. Übrigens habe ich nur installiert, mostum das herauszufinden, und es gefällt mir. Vielen Dank.

   GREP_COLORS
          Specifies  the  colors  and other attributes
          used  to  highlight  various  parts  of  the
          output.  Its value is a colon-separated list
          of    capabilities    that    defaults    to
          ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36
          with the  rv  and  ne  boolean  capabilities
          omitted     (i.e.,     false).     Supported
          capabilities are as follows.

          ne     Boolean  value that prevents clearing
                 to the end of  line  using  Erase  in
                 Line  (EL) to Right (\33[K) each time
                 a  colorized  item  ends.   This   is
                 needed  on  terminals  on which EL is
                 not  supported.   It   is   otherwise
                 useful  on  terminals  for  which the
                 back_color_erase    (bce)     boolean
                 terminfo  capability  does not apply,
                 when the chosen highlight  colors  do
         ...
mikeserv
quelle
@ Hibou57 - Gibt es irgendetwas an dieser Antwort, das deine Frage nicht beantwortet?
Mikeserv
1
Ich begegne dem auch. Ich verstehe den Befehl in dieser Antwort nicht und wenn ich ihn auf meinem System versuche, wird eine Instanz mostangezeigt, in der nichts angezeigt wird. Die Antwort scheint auch sehr spezifisch zu sein grep, und ich habe das Problem der Farbanzeige plus Escape-Codes mit mehr als nur grep. - MacOS 10.12.6 mit Bash4.4.19(1)-release (x86_64-apple-darwin16.7.0)
adfaklsdjf