Bash: farbig kopieren / einfügen

12

Wie jeder habe ich ein paar farbige Ausgaben in meiner Bash. Ich möchte die kolorierte Syntax beibehalten, wenn ich beispielsweise einen Auszug in einen HTML-Editor kopiere. Gibt es eine Möglichkeit, damit umzugehen?

Vielen Dank.

AketO
quelle

Antworten:

16

Wenn Sie sich über kolorierte Ausgabe von einigen Befehlszeilen - Dienstprogramme zu sprechen sind wie ls, grep, cmake, git diff, etc. Bitte beachten Sie , dass es hat keine Beziehungen zu GNU Bash.

Es gibt jedoch mehrere Tools zum Konvertieren von mit ANSI-Escape-Sequenzen eingefärbten Ausgaben in HTML:

  • aha aus gleichnamigem Paket
  • ansi2htmlaus dem HTML :: FromANSI Perl-Modul (nicht in Ubuntu Repo enthalten, kann aus dem CPAN installiert werden)
  • ansi2html.shvon pixelb (nicht verpackt, download von git)

Die Verwendung von allen ist recht einfach: Sie lesen terminale Escape-Sequenzen aus stdinund fügen HTML ein stdout. Beachten Sie jedoch, dass die meisten Utils die Ausgabe nicht einfärben, wenn sie nicht zum Terminal wird. Sie müssen sie bestellen, um eine explizite farbige Ausgabe zu erhalten. Z.B.:

$ ls --color=always | aha | xsel -i -b

xsel -i -b Hier wird HTML in die Zwischenablage kopiert.

Dmitry Alexandrov
quelle
Dies ( aha) hat wunderbar funktioniert; vielen Dank!
ShreevatsaR
2
aha - genial! Das ist fast perfekt für mich. Um formatierten Text kopieren zu können, habe ich mich an die Route zu tmp angepasst, im Browser geöffnet und dann wie bei anderen Sites kopiert / eingefügt: git -c color.ui=always diff | aha > /tmp/diff.html && firefox /tmp/diff.html ... und ja, ich weiß, dass das OP das HTML wollte, aber viele von uns werden hier gerne stolpern die Formatierung im Allgemeinen.
Salbei