Bash: kolorowa kopia / wklej

12

Jak wszyscy, mam kilka kolorowych wyników w moim bashu. Chcę zachować kolorową składnię na przykład podczas kopiowania wyciągu do edytora HTML. Czy istnieje sposób, aby sobie z tym poradzić?

Dzięki.

AketO
źródło

Odpowiedzi:

17

Jeśli mówimy o barwionym wyjściu niektórych narzędzi wiersza poleceń, takich jak ls, grep, cmake, git diff, itp, proszę zauważyć, że nie ma żadnych relacji do GNU Bash.

W każdym razie istnieje kilka narzędzi do konwersji danych wyjściowych pokolorowanych sekwencjami ucieczki ANSI na HTML:

  • aha z paczki o tej samej nazwie
  • ansi2htmlz modułu HTML :: FromANSI Perl (nie jest pakowany w repozytorium Ubuntu, może być zainstalowany z CPAN)
  • ansi2html.shautor: pixelb (nie spakowany, pobierz z git)

Korzystanie z nich wszystkich jest dość proste: odczytują sekwencje specjalne terminali stdini umieszczają w nich HTML stdout. Ale uwaga: większość programów narzędziowych nie koloryzuje danych wyjściowych, jeśli nie zostaną one zakończone. Musisz je zamówić, aby jawnie tworzyły kolorowe wydruki. Np .:

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

xsel -i -b tutaj skopiuje HTML do schowka.

Dmitrij Aleksandrow
źródło
To ( aha) działało pięknie; Dziękuję Ci bardzo!
ShreevatsaR
2
aha - genialne! To jest dla mnie prawie idealne. Aby móc skopiować sformatowany tekst, dostosowałem się do trasy do tmp, otwieram w przeglądarce, a następnie po prostu kopiuję / wklejam jak w przypadku innych stron: git -c color.ui=always diff | aha > /tmp/diff.html && firefox /tmp/diff.html ... i tak, wiem, że OP chciał html, ale wielu z nas potknie się tutaj formatowanie ogólnie.
mędrzec