Der Titel dieser Frage ist sehr irreführend. Viele Menschen auf dieser Seite erwarten Sie eine Lösung für das Problem Färbung der Landung erhalten, wenn Rohrleitungen einen Befehl mit farbiger Ausgabe less: Farben verloren. (Die Antworten auf diese „Rohrleitungen Problem“ beinhalten less -R, unbufferetc.) Aber die eigentliche Frage bezieht sich auf das Öffnen einer Datei ! - Die Mehrdeutigkeit liegt hauptsächlich im Titel der Frage, aber auch sonst ist die Frage meiner Meinung nach immer noch zu weit gefasst: "Eine Datei lesen" kann sich auf eine beliebige Datei beziehen (wahrscheinlich einfacher Text). (
Nun
Ich muss mich korrigieren, nur bei 3 (oder 4) von 14 Antworten fehlt die eigentliche Frage des OP: die Antworten von ChristopheD , Puneet und Onlyjob ; und vielleicht jbbr . Dennoch gehören zwei dieser Antworten zu den drei Antworten mit den höchsten Stimmen.
3.
@myrdd "Syntax-Hervorhebung" ist der relevante Begriff, dann ... (fragt es nach dem Anzeigen von Farben, nicht nach dem Hinzufügen von Farben?) less -Rwerden auch Dateien bearbeitet, z. B.ls --color=always > /tmp/file && less -R /tmp/file
Gert van den Berg
1
@myrdd Es könnte am sinnvollsten sein, die Frage als "unklar, was gefragt wird" zu schließen, da Fragen, die eine der beiden Fragen stellen, wahrscheinlich als Duplikate dieser Frage markiert werden ... (Und Antworten für eine der beiden Fragen können herabgestuft werden basierend darauf, wie der Wähler es interpretiert ...) (Mein Anwendungsfall war eine Protokolldatei, die (ärgerlicherweise) farbige Escape-Codes enthält)
Gert van den Berg
Antworten:
149
Sie können die Kraft der Pygementisierung mit weniger nutzen - automatisch! (Kein Rohr von Hand erforderlich.)
Installieren Sie es pygmentsmit Ihrem Paketmanager oder pip (möglicherweise aufgerufen python-pygments) oder laden Sie es hier herunter http://pygments.org/download/ .
Schreiben Sie eine Datei ~/.lessfilter
#!/bin/sh
case "$1" in
*.awk|*.groff|*.java|*.js|*.m4|*.php|*.pl|*.pm|*.pod|*.sh|\
*.ad[asb]|*.asm|*.inc|*.[ch]|*.[ch]pp|*.[ch]xx|*.cc|*.hh|\
*.lsp|*.l|*.pas|*.p|*.xml|*.xps|*.xsl|*.axp|*.ppd|*.pov|\
*.diff|*.patch|*.py|*.rb|*.sql|*.ebuild|*.eclass)
pygmentize -f 256 "$1";;
.bashrc|.bash_aliases|.bash_environment)
pygmentize -f 256 -l sh "$1";;
*)
if grep -q "#\!/bin/bash" "$1" 2> /dev/null; then
pygmentize -f 256 -l sh "$1"
else
exit 1
fi
esac
exit 0
Außerdem müssen Sie ~/.lessfilterausführbar machen, indem Sie ausführen
chmod u+x ~/.lessfilter
Getestet unter Debian.
Du hast die Idee. Dies kann natürlich weiter verbessert werden, indem mehr Erweiterungen akzeptiert werden oder der shebang für andere Interpreten als bash analysiert wird. Sehen Sie sich einige der anderen Antworten dazu an.
Die Idee kam von einem alten Blog-Post der Macher von Pygments , aber der ursprüngliche Post existiert nicht mehr.
Wenn Sie die Quellcodedateien einfärben möchten, müssen Sie auch ~ / .lessfilter ausführbar machen, indem Sie ausführen chmod u+x ~/.lessfilter. Sie müssen auch pygementize ( pygments.org/download ) installiert haben.
Sergiy Belozorov
Kann jemand bestätigen, dass dies funktioniert, da es für mich keine Auswirkung hat, wenn ich einen Befehl wiels -l | less
puk
7
@puk du kannst sowas machen ls --color=always -l | less -R. Natürlich gibt es viel zu tippen, aber man könnte es auch mit so etwas aliasen ll. Das ist, wenn Sie keine zusätzlichen Bibliotheken verwenden möchten.
PhilT
2
hat @ SergiyByelozyorovs Kommentar zur Antwort hinzugefügt.
Andrybak
2
Meine Bearbeitung wurde abgelehnt, daher werde ich sie vermutlich stattdessen als Kommentar veröffentlichen: Testen Sie die Exit-Codes von Befehlen nicht indirekt. Sie können verwenden if grep -q "#\!/bin/bash" "$1"(das -qunterdrückt die Standardausgabe). Möglicherweise möchten Sie den Standardfehler mit umleiten 2>/dev/null.
Tom Fenech
503
Versuche Folgendes:
less -R
von man less:
-r oder --raw-control-chars
Bewirkt, dass "rohe" Steuerzeichen angezeigt werden. (...)
-R oder --RAW-CONTROL-CHARS
Wie -r, aber nur ANSI "color" Escape-Sequenzen werden in "raw" -Form ausgegeben. (...)
Dies ist nützlich, wenn die Datei selbst die Escape-Codes enthält, die angezeigt werden müssen.
Nitrodist
1
Früher kannte ich mich mit less -r aus, aber die Suche in der Datei mit "/" brachte immer wieder die falschen Zeilen zum Vorschein. -R scheint einen besseren Job zu machen. Danke für den Tipp.
Amos Shapira
54
Es ist zu beachten, dass die meisten Programme den isatty(2)syscall verwenden, um zu prüfen, ob es sich bei ihrer Standardausgabe um ein Terminal handelt, und in der Regel die farbige Ausgabe deaktivieren, wenn dies nicht der Fall ist. Für jede Pipe zu weniger isattywird 0 zurückgegeben. Um zu überprüfen, ob dies funktioniert, versuchen Sieecho -e '\x1b[32;1mtest\x1b[m' | less -r
mic_e
11
Diese Antwort zeichnet sich nicht dadurch aus, dass tatsächlich etwas getestet wird.
Michael Wolf
18
Sie können auch eingeben, -Rwenn Sie bereits geöffnet haben less, um dies zu erreichen.
Wenn Sie es einfach ausführen grep --color, wird grep --color=autoerkannt, ob es sich bei der Ausgabe um ein Terminal handelt, und wenn ja, werden Farben aktiviert. Wenn jedoch eine Pfeife erkannt wird, wird die Färbung deaktiviert. Der folgende Befehl:
grep --color=always "search string" * | less -R
Aktiviert immer die Färbung und überschreibt die automatische Erkennung, und Sie erhalten die Farbhervorhebung in weniger.
Warnung: Nicht --color=alwaysals Alias verwenden, da dies manchmal zu Problemen führt. Deshalb gibt es eine --color=autoOption.
Nett, danke. Außer, dass ich -Rals Option dazu lessauch verwenden muss.
naught101
10
Ich glaube, grep -Rist für die Angabe der rekursiven Suche. less -Rist notwendig, um lessdie Farben wieder richtig auszuspucken. grep --color=always [grep cmds] | less -Rfunktioniert bei mir unter OS X 10.7.3!
Steven Lu
@ naught101 @Steven Lu Bearbeitet in, obwohl es den Anschein hat, als müssten manche Leute das nicht benutzen less -R(laut dem Autor des ursprünglichen Beitrags sowieso).
Jtpereyda
2
Gibt es sowieso, um grep nur den Befehl pipe less -R mitzuteilen und dann einfach das Ausmalen zu machen? Wir müssen also nicht immer --color = always und less -R angeben.
A-letubby
1
Dies ist bei weitem die einfachste funktionierende Antwort. Vielen Dank!
Danny Staple
37
Verwenden Sie viewanstelle von less. Es öffnet die Datei mit vimim schreibgeschützten Modus.
Es ist praktisch ein farbiger less: ein Pager, mit dem Sie suchen können /(und mehr). Der einzige Nachteil ist, dass Sie nicht mit beenden können, qaber Sie brauchen:q
Außerdem erhalten Sie die gleiche Farbe wie vim(da Sie tatsächlich verwenden vim).
Wie wäre es mit der Leistung von großen Dateien? Die Hervorhebung der Vim-Syntax ist bei großen Dateien bekanntermaßen langsam.
Mittwoch,
Ich weiß nicht, was Ihr Wert für "groß" ist, aber das Öffnen einer Datei mit ~ 10000 Zeilen erfolgt augenblicklich, einschließlich der Suche im Inneren.
Riccardo Galli
1
Ich habe hochgestuft (ich wusste nichts darüber view), aber ein weiterer Nachteil ist, dass j / k / hoch / runter nicht sofort scrollen, da es einen Cursor gibt.
Tyler Collier
7
Beachten Sie, dass Sie view -bei der Verrohrung möglicherweise hinzufügen müssen
user45909
6
vimist ein Editor, der die gesamte Datei in den Speicher lädt, während lessein Pager die Datei nur teilweise in den Speicher lädt. Sie werden den Unterschied bei großen Dateien erkennen.
Sjas
16
Um weniger zu sagen, dass Farben angezeigt werden sollen, rufen Sie es mit -R auf:
less -R
Leider erkennen einige Programme, dass ihre stdout kein Terminal ist, und deaktivieren Farben - z. B. pacman (Arch Linux-Paketmanager).
In diesen Fällen ist es möglich unbuffer:
unbuffer <command> | less -R
Beispiel mit Pacman
unbuffer pacman -Ss firefox | less -R
Der unbufferBefehl ist normalerweise Teil des Pakets expect(Arch Linux, Debian / Ubuntu) oder expect-dev(ältere Versionen von Debian / Ubuntu).
Um die Frage der Vollständigkeit zu beantworten:
Wie andere bereits geantwortet haben, pygmentizeeignet sich hervorragend zum Einfärben von Quellcode. Es erfordert nicht unbuffer. Einfachster Anruf:
Zur Verwendung unbufferauf Ubuntusudo apt install expect
wisbucky
Diese Antwort braucht mehr Gegenstimmen.
Thomas Dignan
Ich habe versucht, die dmesg-Ausgabe zu leiten, um Startfehler zu überprüfen, aber die Farben funktionierten nur, wenn ich den Unbuffer verwendete, was mich total verwirrte: Funktioniert unbuffer dmesg | less -Rwie erwartet.
12.
15
pygmentizeunterstützt die -gOption, den zu verwendenden Lexer automatisch zu erraten. Dies ist nützlich, wenn Dateien STDINohne Überprüfung eines Erweiterungstyps gelesen werden.
Damit müssen Sie nur die folgenden 2 Exporte in Ihrem .bashrcohne zusätzliche Skripte einstellen :
Prägnant und effektiv. Ich definiere lieber einen Alias, weil manchmal weniger besser ist. Also: alias lesc = 'LESS = "- R" LESSOPEN = "| pygementize -g% s" less'
Tiago
9
Sie haben nicht gesagt, was diese Farbe bedeuten soll, z. B. wie sollen die Farben für eine Textdatei sein?
Wenn Sie eine Syntaxhervorhebung für den Quellcode wünschen, benötigen Sie einen Quellcode-Textmarker. Ich benutze manchmal Pygementize wie dieses
pygmentize file.cpp | less
oder
pygmentize file.cpp | more
Es gibt noch andere Textmarker.
Das geht ziemlich schnell. Wenn es Ihnen nichts ausmacht, zu starten, vimgibt es einen schreibgeschützten Modus, in dem Sie die Syntax hervorheben können, wenn Sie sie aktiviert haben vim.
Überprüfen Sie, ob lesspipeoder lessfilebereits aktiviert ist:
echo $LESSOPEN
Wenn Sie dort kein Programm finden, auf das verwiesen wird, stellen Sie sicher, dass lesspipees installiert ist (die meisten Distributionen werden mitgeliefert).
Fügen Sie Folgendes hinzu zu ~/.bashrc:
# sets LESSOPEN and LESSCLOSE variableseval"$(SHELL=/bin/sh lesspipe)"# interpret color characters
export LESS='-R'# to list available styles: `pygmentize -L styles`
export PYGMENTIZE_STYLE='paraiso-dark'# optional
alias ls='ls --color=always'
alias grep='grep --color=always'
Wenn Sie nicht möchten lesspipe, ersetzen Sie die evalAnweisung durch:
export LESSOPEN='|~/.lessfilter %s'
Erstellen ~/.lessfilter
Fügen Sie den folgenden Code hinzu und machen Sie die Datei ausführbar: chmod u+x ~/.lessfilter
Der einzige Nachteil bei diesem Ansatz ist, dass Pygments ein Python-Programm ist. Bei der erstmaligen Verwendung während einer Shell-Sitzung tritt eine Kaltstartverzögerung auf. Nachfolgende Aufrufe sind viel schneller.
Joe Coder
Nett! Wirklich umfassend.
Dario Seidl
4
Verwenden Sie das GNU Source-Highlight . Sie können es mit installieren, aptwenn Sie es haben, oder auf andere Weise von der Quelle installieren. Richten Sie dann mit Hilfe der Dokumentation zu Source-highligh einen "Eingabe-Präprozessor" für weniger ein, um mit weniger einzurichten :
Dies wurde von Konstantine Serebriany vorgeschlagen. Das Skript src-hilite-lesspipe.sh wird zusammen mit source-highlight installiert. Sie können die folgenden Umgebungsvariablen verwenden:
Wenn Sie beim Durchsuchen einer Datei weniger verwenden, wird diese automatisch hervorgehoben, wenn es sich um eine Quelldatei handelt, die von source-highlight behandelt wird.
Xavier-Emmanuel Vincent hat kürzlich eine alternative Version des ANSI-Farbschemas "esc256.style" bereitgestellt: Einige Terminals können 256 Farben verarbeiten. Xavier stellte auch ein Skript zur Verfügung, das prüft, wie viele Farben Ihr Terminal verarbeiten kann, und falls es die Variante 256 verwendet. Das Skript heißt source-highlight-esc.sh und wird zusammen mit den anderen Binärdateien installiert.
Wenn Sie eine andere Antwort erweitern möchten, können Sie sie für die meisten, wenn nicht für alle Skripte ohne Erweiterungen verwenden, indem Sie die .lessfilter-Datei ein wenig ändern:
#!/bin/sh
case "$1" in
*.awk|*.groff|*.java|*.js|*.m4|*.php|*.pl|*.pm|*.pod|*.sh|\
*.ad[asb]|*.asm|*.inc|*.[ch]|*.[ch]pp|*.[ch]xx|*.cc|*.hh|\
*.lsp|*.l|*.pas|*.p|*.xml|*.xps|*.xsl|*.axp|*.ppd|*.pov|\
*.diff|*.patch|*.py|*.rb|*.sql|*.ebuild|*.eclass)
pygmentize -f 256 "$1";;
.bashrc|.bash_aliases|.bash_environment)
pygmentize -f 256 -l sh "$1"
;;
*)
scriptExec=$(head -1 "$1" |grep "^#\!" |awk -F" " '{print $1}')
scriptExecStatus=$?
if [ "$scriptExecStatus" -eq "0" ]; then
lexer=$(echo $scriptExec |awk -F/ '{print $NF}')
pygmentize -f 256 -l $lexer "$1"
else
exit 1
fi
esac
exit 0
Sie müssten die beiden Variablen noch zu .bashrc hinzufügen:
Und Sie müssen noch .lessfilter ausführbar machen:
$ chmod 700 ~/.lessfilter
Außerdem wollte ich hinzufügen, dass das Paket pygments unter debian python-pygments heißt. Anfangs hatte ich Probleme, es zu finden, weil die offensichtliche Rechtschreibfehler von "Pigmenten" als "Pygmenten" mir nicht genug als Hinweis dienten, dass es sich um ein Paket handelte, dem vom Paketmanager möglicherweise das Präfix "python-" vorangestellt wurde.
2 Kommentare: 1) Danke für die Verbesserung. 2) Sätze wie "Beste Antwort gewählt" sind nicht besonders gut. das kann sich ändern (in der Tat, wenn dies besser ist als diese Antwort, könnte dieser Beitrag die Top-Antwort werden, an welchem Punkt wird es nur verwirrend sein. Vielleicht sagen Sie einfach "um auf eine andere Antwort zu erweitern" oder "Captaincomics Antwort"?
cpast
2
Sie können die Verwendung eines mostDienstprogramms in Betracht ziehen, das eine farbfreundliche Alternative für lessund darstellt more.
Können Sie uns ein Beispiel zeigen? Ich habe es hier versucht, und die Ausgabe war schwarz und weiß.
Danilo
Ihre Eingabe sollte Farben enthalten. Zuerst erzeugt eine colorised Probe (zB ccze -A </var/log/dpkg.log, ls -1 --color /var/log) dann Pipe an most: ls -1 --color /var/log | most.
Onlyjob
ja, habe ich: git status | less --color,git status | most --color
danilo
Ich habe die meisten, mehr, weniger verwendet und alle Werkzeuge zeigen Schwarzweiß
danilo
Vergewissern Sie sich, dass Ihr Befehl Farben erzeugt, bevor Sie an lessandere weiterleiten . Stellen Sie sicher, dass Ihr Terminal-Emulator Farben ausgeben kann. Überprüfen Sie die TERMUmgebungsvariable. Lesen Sie mehr in unix.stackexchange.com/questions/148/…. Verwenden Sie nach Möglichkeit eine moderne GNU + Linux-Distribution wie Debian . Verwenden Sie eine Suchmaschine (z. B. duckduckgo.com startpage.com ), um Antworten zu finden. Denken Sie daran, dass Kommentare nicht zur Diskussion stehen.
Fügen Sie für farbenfrohe Hilfeseiten Folgendes zu Ihrem .bashrcoder hinzu .zshrc:
export LESS_TERMCAP_mb=$'\E[1;31m' # begin bold
export LESS_TERMCAP_md=$'\E[1;36m' # begin blink
export LESS_TERMCAP_me=$'\E[0m' # reset bold/blink
export LESS_TERMCAP_so=$'\E[01;44;33m' # begin reverse video
export LESS_TERMCAP_se=$'\E[0m' # reset reverse video
export LESS_TERMCAP_us=$'\E[1;32m' # begin underline
export LESS_TERMCAP_ue=$'\E[0m' # reset underline
Verwenden Sie zum Hervorheben der Syntax eine vorhandene leistungsstarke Funktion lesspipe.sh, anstatt Ihre eigene zu schreiben: https://github.com/wofr06/lesspipe
Ich habe diese einfache, elegante Lösung gefunden. Sie müssen keine zusätzlichen Komponenten installieren, da diese auf den meisten Computern standardmäßig bereits vorhanden sind. Wie vimauf den meisten Computern standardmäßig installiert, enthält es ein Makro, vimwie es ausgeführt werden sollless
Einige der Optionen, die verwendet werden können, sind das Erstellen eines Alias:
alias vless='vim -u /usr/share/vim/vim74/macros/less.vim'
oder erstellen Sie einen symbolischen Link:
ln -s /usr/share/vim/vim74/macros/less.sh ~/bin/vless
Ich habe alias lesser='/usr/share/vim/vim80/macros/less.sh'in ~/bash_aliases(in Ubuntu 18.04). Kann Tastenkürzel wie f vorwärts, b rückwärts, d halb runter, u halb rauf, q beenden, etc ... verwenden
Daniel
0
Die für mich intuitivste und einfachste Lösung war das pygmentize
Hinzufügen der folgenden Zeilen zu .bashrc
less
: Farben verloren. (Die Antworten auf diese „Rohrleitungen Problem“ beinhaltenless -R
,unbuffer
etc.) Aber die eigentliche Frage bezieht sich auf das Öffnen einer Datei ! - Die Mehrdeutigkeit liegt hauptsächlich im Titel der Frage, aber auch sonst ist die Frage meiner Meinung nach immer noch zu weit gefasst: "Eine Datei lesen" kann sich auf eine beliebige Datei beziehen (wahrscheinlich einfacher Text). (less -R
werden auch Dateien bearbeitet, z. B.ls --color=always > /tmp/file && less -R /tmp/file
Antworten:
Sie können die Kraft der Pygementisierung mit weniger nutzen - automatisch! (Kein Rohr von Hand erforderlich.)
Installieren Sie es
pygments
mit Ihrem Paketmanager oder pip (möglicherweise aufgerufenpython-pygments
) oder laden Sie es hier herunter http://pygments.org/download/ .Schreiben Sie eine Datei
~/.lessfilter
In Ihrem
.bashrc
hinzufügenAußerdem müssen Sie
~/.lessfilter
ausführbar machen, indem Sie ausführenGetestet unter Debian.
Du hast die Idee. Dies kann natürlich weiter verbessert werden, indem mehr Erweiterungen akzeptiert werden oder der shebang für andere Interpreten als bash analysiert wird. Sehen Sie sich einige der anderen Antworten dazu an.
Die Idee kam von einem alten Blog-Post der Macher von Pygments , aber der ursprüngliche Post existiert nicht mehr.
quelle
chmod u+x ~/.lessfilter
. Sie müssen auch pygementize ( pygments.org/download ) installiert haben.ls -l | less
ls --color=always -l | less -R
. Natürlich gibt es viel zu tippen, aber man könnte es auch mit so etwas aliasenll
. Das ist, wenn Sie keine zusätzlichen Bibliotheken verwenden möchten.if grep -q "#\!/bin/bash" "$1"
(das-q
unterdrückt die Standardausgabe). Möglicherweise möchten Sie den Standardfehler mit umleiten2>/dev/null
.Versuche Folgendes:
von
man less
:quelle
isatty(2)
syscall verwenden, um zu prüfen, ob es sich bei ihrer Standardausgabe um ein Terminal handelt, und in der Regel die farbige Ausgabe deaktivieren, wenn dies nicht der Fall ist. Für jede Pipe zu wenigerisatty
wird 0 zurückgegeben. Um zu überprüfen, ob dies funktioniert, versuchen Sieecho -e '\x1b[32;1mtest\x1b[m' | less -r
-R
wenn Sie bereits geöffnet habenless
, um dies zu erreichen.Ich habe die Antwort in einem anderen Beitrag erhalten: Less and Grep: Farbige Ergebnisse, wenn eine Pipe von grep zu less verwendet wird
Warnung: Nicht
--color=always
als Alias verwenden, da dies manchmal zu Problemen führt. Deshalb gibt es eine--color=auto
Option.quelle
-R
als Option dazuless
auch verwenden muss.grep -R
ist für die Angabe der rekursiven Suche.less -R
ist notwendig, umless
die Farben wieder richtig auszuspucken.grep --color=always [grep cmds] | less -R
funktioniert bei mir unter OS X 10.7.3!less -R
(laut dem Autor des ursprünglichen Beitrags sowieso).Verwenden Sie
view
anstelle vonless
. Es öffnet die Datei mitvim
im schreibgeschützten Modus.Es ist praktisch ein farbiger
less
: ein Pager, mit dem Sie suchen können /(und mehr). Der einzige Nachteil ist, dass Sie nicht mit beenden können, qaber Sie brauchen:q
Außerdem erhalten Sie die gleiche Farbe wie
vim
(da Sie tatsächlich verwendenvim
).quelle
view
), aber ein weiterer Nachteil ist, dass j / k / hoch / runter nicht sofort scrollen, da es einen Cursor gibt.view -
bei der Verrohrung möglicherweise hinzufügen müssenvim
ist ein Editor, der die gesamte Datei in den Speicher lädt, währendless
ein Pager die Datei nur teilweise in den Speicher lädt. Sie werden den Unterschied bei großen Dateien erkennen.Um weniger zu sagen, dass Farben angezeigt werden sollen, rufen Sie es mit -R auf:
Leider erkennen einige Programme, dass ihre stdout kein Terminal ist, und deaktivieren Farben - z. B. pacman (Arch Linux-Paketmanager).
In diesen Fällen ist es möglich
unbuffer
:Beispiel mit Pacman
Der
unbuffer
Befehl ist normalerweise Teil des Paketsexpect
(Arch Linux, Debian / Ubuntu) oderexpect-dev
(ältere Versionen von Debian / Ubuntu).Um die Frage der Vollständigkeit zu beantworten:
Wie andere bereits geantwortet haben,
pygmentize
eignet sich hervorragend zum Einfärben von Quellcode. Es erfordert nichtunbuffer
. Einfachster Anruf:quelle
unbuffer
auf Ubuntusudo apt install expect
unbuffer dmesg | less -R
wie erwartet.pygmentize
unterstützt die-g
Option, den zu verwendenden Lexer automatisch zu erraten. Dies ist nützlich, wenn DateienSTDIN
ohne Überprüfung eines Erweiterungstyps gelesen werden.Damit müssen Sie nur die folgenden 2 Exporte in Ihrem
.bashrc
ohne zusätzliche Skripte einstellen :quelle
Sie haben nicht gesagt, was diese Farbe bedeuten soll, z. B. wie sollen die Farben für eine Textdatei sein?
Wenn Sie eine Syntaxhervorhebung für den Quellcode wünschen, benötigen Sie einen Quellcode-Textmarker. Ich benutze manchmal Pygementize wie dieses
oder
Es gibt noch andere Textmarker.
Das geht ziemlich schnell. Wenn es Ihnen nichts ausmacht, zu starten,
vim
gibt es einen schreibgeschützten Modus, in dem Sie die Syntax hervorheben können, wenn Sie sie aktiviert habenvim
.oder alternativ siehe churnds antwort.
quelle
Dies ist eine weitere pygments- basierte Antwort mit mehreren wesentlichen Verbesserungen:
lesspipe
oderlessfile
filtertless
Installiere Pygments und Gawk
Umgebungsvariablen festlegen
Überprüfen Sie, ob
lesspipe
oderlessfile
bereits aktiviert ist:Wenn Sie dort kein Programm finden, auf das verwiesen wird, stellen Sie sicher, dass
lesspipe
es installiert ist (die meisten Distributionen werden mitgeliefert).Fügen Sie Folgendes hinzu zu
~/.bashrc
:Wenn Sie nicht möchten
lesspipe
, ersetzen Sie dieeval
Anweisung durch:Erstellen
~/.lessfilter
Fügen Sie den folgenden Code hinzu und machen Sie die Datei ausführbar:
chmod u+x ~/.lessfilter
quelle
Verwenden Sie das GNU Source-Highlight . Sie können es mit installieren,
apt
wenn Sie es haben, oder auf andere Weise von der Quelle installieren. Richten Sie dann mit Hilfe der Dokumentation zu Source-highligh einen "Eingabe-Präprozessor" für weniger ein, um mit weniger einzurichten :quelle
Wenn Sie eine andere Antwort erweitern möchten, können Sie sie für die meisten, wenn nicht für alle Skripte ohne Erweiterungen verwenden, indem Sie die .lessfilter-Datei ein wenig ändern:
Sie müssten die beiden Variablen noch zu .bashrc hinzufügen:
Und Sie müssen noch .lessfilter ausführbar machen:
Außerdem wollte ich hinzufügen, dass das Paket pygments unter debian python-pygments heißt. Anfangs hatte ich Probleme, es zu finden, weil die offensichtliche Rechtschreibfehler von "Pigmenten" als "Pygmenten" mir nicht genug als Hinweis dienten, dass es sich um ein Paket handelte, dem vom Paketmanager möglicherweise das Präfix "python-" vorangestellt wurde.
quelle
Sie können die Verwendung eines
most
Dienstprogramms in Betracht ziehen, das eine farbfreundliche Alternative fürless
und darstelltmore
.quelle
ccze -A </var/log/dpkg.log
,ls -1 --color /var/log
) dann Pipe anmost
:ls -1 --color /var/log | most
.git status | less --color
,git status | most --color
less
andere weiterleiten . Stellen Sie sicher, dass Ihr Terminal-Emulator Farben ausgeben kann. Überprüfen Sie dieTERM
Umgebungsvariable. Lesen Sie mehr in unix.stackexchange.com/questions/148/…. Verwenden Sie nach Möglichkeit eine moderne GNU + Linux-Distribution wie Debian . Verwenden Sie eine Suchmaschine (z. B. duckduckgo.com startpage.com ), um Antworten zu finden. Denken Sie daran, dass Kommentare nicht zur Diskussion stehen.Aus meinem vollständigen Blog-Beitrag über die Verbesserung weniger Erfahrung: https://www.topbug.net/blog/2016/09/27/make-gnu-less-more-powerful/
Fügen Sie für farbenfrohe Hilfeseiten Folgendes zu Ihrem
.bashrc
oder hinzu.zshrc
:Verwenden Sie zum Hervorheben der Syntax eine vorhandene leistungsstarke Funktion
lesspipe.sh
, anstatt Ihre eigene zu schreiben: https://github.com/wofr06/lesspipequelle
Ich habe diese einfache, elegante Lösung gefunden. Sie müssen keine zusätzlichen Komponenten installieren, da diese auf den meisten Computern standardmäßig bereits vorhanden sind. Wie
vim
auf den meisten Computern standardmäßig installiert, enthält es ein Makro,vim
wie es ausgeführt werden sollless
Einige der Optionen, die verwendet werden können, sind das Erstellen eines Alias:
alias vless='vim -u /usr/share/vim/vim74/macros/less.vim'
oder erstellen Sie einen symbolischen Link:
ln -s /usr/share/vim/vim74/macros/less.sh ~/bin/vless
Dann rennst du einfach
vless myfile.py
Die meisten Informationen habe ich hier
quelle
alias lesser='/usr/share/vim/vim80/macros/less.sh'
in~/bash_aliases
(in Ubuntu 18.04). Kann Tastenkürzel wie f vorwärts, b rückwärts, d halb runter, u halb rauf, q beenden, etc ... verwendenDie für mich intuitivste und einfachste Lösung war das
pygmentize
Hinzufügen der folgenden Zeilen zu .bashrc
Falls Sie nicht anrufen konnten
pygmentize
, installieren Sie einfach wieps. Die
pygmentize
ausführbare Binärdatei würde in/usr/local/bin/
oder in Ihrem/home/username/.virtualenv/venvname/bin/
oder irgendwo sitzen .quelle
Keines von diesen funktionierte sofort für mich und ich fand einen einfachen Weg, diese Arbeit zu machen, so dass ich dachte, ich würde teilen.
Verwenden Sie einfach tmux, mit dem Sie auf einen größeren Verlauf zugreifen und darin blättern können und die Farben perfekt erhalten bleiben.
quelle
Solange der ausgegebene Text Farbkontrollzeichen enthält, reicht
less -R
dies aus.quelle