Copy colorful terminal (emulator) text output and paste as HTML?

8,552

Solution 1

Use the script utility to capture the terminal output to a file (ansi color control characters included) and then convert it to html with ansi2html script. Eg:

inigo:tmp> script
Script started, file is typescript
inigo:tmp> ls
#
# lots of colour output
# 
inigo:tmp> exit
exit
Script done, file is typescript
inigo:tmp> cat typescript  | ansi2html.sh > typescript.html

If using PuTTY, "All session output" login option will also keep the ansi color codes.

As an alternative to ansi2html, you could use aha - Ansi HTML Adapter.

Solution 2

After seven years and nine months, putty still don't support 'Copy as HTML' feature.

I had already turned to Fedora linux as my primary operating system for work for about six years and nine months because of end-of-life of Windows XP.

Now, gnome-terminal v3.x had added 'Copy as HTML' feature for 3 years (git commit GNOME bug report), and it works as what I expected, so I will use gnome-terminal to do this job if I needed. See the screenshots below.


GNOME terminal 3.36.1.1 window

GNOME terminal 3.36.1.1 window


The HTML code copied from GNOME terminal

<pre><font color="#00D700">root</font> @ <span style="background-color:#005FAF"><font color="#00005F">tx300</font></span> <font color="#00FFFF">/tmp</font> <span style="background-color:#AF00AF"><font color="#FF0A0A">2020-05-29 16:34:00</font></span>
# ls /usr/bin/vi*
<font color="#00FFFF">/usr/bin/vi</font>        <font color="#00D700">/usr/bin/virt-alignment-scan</font>      <font color="#00D700">/usr/bin/virt-edit</font>            <font color="#00D700">/usr/bin/virt-ls</font>            <font color="#00D700">/usr/bin/virt-tail</font>
<font color="#00FFFF">/usr/bin/view</font>      <font color="#00D700">/usr/bin/virt-builder</font>             <font color="#00D700">/usr/bin/virt-filesystems</font>     <font color="#00D700">/usr/bin/virt-make-fs</font>       <font color="#00D700">/usr/bin/virt-tar-in</font>
<font color="#00D700">/usr/bin/viewres</font>   <font color="#00D700">/usr/bin/virt-builder-repository</font>  <font color="#00D700">/usr/bin/virt-format</font>          <font color="#00D700">/usr/bin/virt-manager</font>       <font color="#00D700">/usr/bin/virt-tar-out</font>
<font color="#00D700">/usr/bin/vim</font>       <font color="#00D700">/usr/bin/virt-cat</font>                 <font color="#00D700">/usr/bin/virtfs-proxy-helper</font>  <font color="#00D700">/usr/bin/virt-pki-validate</font>  <font color="#00D700">/usr/bin/virt-win-reg</font>
<font color="#00FFFF">/usr/bin/vimdiff</font>   <font color="#00D700">/usr/bin/virt-copy-in</font>             <font color="#00D700">/usr/bin/virt-get-kernel</font>      <font color="#00D700">/usr/bin/virt-qemu-run</font>      <font color="#00D700">/usr/bin/virt-xml-validate</font>
<font color="#00D700">/usr/bin/vimdot</font>    <font color="#00D700">/usr/bin/virt-copy-out</font>            <font color="#00D700">/usr/bin/virt-host-validate</font>   <font color="#00D700">/usr/bin/virt-rescue</font>        <font color="#00D700">/usr/bin/vi.vi</font>
<font color="#00D700">/usr/bin/vimtutor</font>  <font color="#00D700">/usr/bin/virt-customize</font>           <font color="#00D700">/usr/bin/virt-index-validate</font>  <font color="#00D700">/usr/bin/virt-resize</font>
<font color="#00FFFF">/usr/bin/vimx</font>      <font color="#00D700">/usr/bin/virt-df</font>                  <font color="#00D700">/usr/bin/virt-inspector</font>       <font color="#00D700">/usr/bin/virt-sparsify</font>
<font color="#00D700">/usr/bin/virsh</font>     <font color="#00D700">/usr/bin/virt-diff</font>                <font color="#00D700">/usr/bin/virt-log</font>             <font color="#00D700">/usr/bin/virt-sysprep</font>
<font color="#00D700">root</font> @ <span style="background-color:#005FAF"><font color="#00005F">tx300</font></span> <font color="#00FFFF">/tmp</font> <span style="background-color:#FF87AF"><font color="#8A8A8A">2020-05-29 16:34:03</font></span>
#
</pre>

HTML render result (Firefox 76.0.1)

HTML render result (Firefox 76.0.1)

Share:
8,552

Related videos on Youtube

LiuYan 刘研
Author by

LiuYan 刘研

Updated on September 18, 2022

Comments

  • LiuYan 刘研
    LiuYan 刘研 over 1 year

    I want to write notes (in HTML format) when learning Linux. When I need to note colorful terminal text output, I want the color of terminal text can be remained in my notes, e.g.:

    Note 1: Test
    
    The output of xx command is
    
    <pre>
    [root@webserver ~]# ll /
    total 100
    drwxrwxrwt.   7 root root  4096 8月  24 12:22 <span style='background-color:green; color:blue;'>tmp</span>
    drwxr-xr-x.  14 root root  4096 7月  19 21:20 <span style='color:blue;'>usr</span>
    </pre>
    

    I can manually add HTML code wrapper around the plain text, but I hope there's an automatic way to achieve that.

    Currently, I'm using putty on Windows to connect to remote CentOS linux server.

    • Ishikawa Yoshi
      Ishikawa Yoshi over 11 years
      you want to copy data from terminal to buffer and when you paste it in notepad you expected to seen html near color words?
    • LiuYan 刘研
      LiuYan 刘研 over 11 years
      yes, that's what i wanted. i think this can be done in terminal emulator software (translate control characters into HTML), but i don't know if there's such emulator has such function.
    • Ishikawa Yoshi
      Ishikawa Yoshi over 11 years
    • LiuYan 刘研
      LiuYan 刘研 over 11 years
      thanks for the link, i didn't notice that option before. however that's a slight different question, i want the paste to be HTML code, not rich text format (and my RTF paste seems malformed characters).
    • Ishikawa Yoshi
      Ishikawa Yoshi over 11 years
    • LiuYan 刘研
      LiuYan 刘研 over 11 years
      maybe i need post a feature request to putty