Home » Questions » Computers [ Ask a new question ]

Are there any options to let cat output with color?

Are there any options to let cat output with color?

If I want to output a C source code file with syntax highlighting, can I use cat?

Asked by: Guest | Views: 328
Total answers/comments: 2
Guest [Entry]

"A GNU package, source-highlight, seems to do the trick (though isn't using cat -- as John T points out, this isn't possible with cat specifically). It's available via apt-get on Ubuntu, and requires the Boost regex library. Check your package manager to see if both are available, otherwise you can grab them from the web. The GNU page linked earlier has a link to Boost, I think.

After installation, I created a new script in my path called ccat. The script looks like:

#!/bin/bash
src-hilite-lesspipe.sh $1

Nothing fancy, just simplifying the less script they include with source-highlight. It acts just like cat when called in this fashion.

The included less script is a nice script to use as well, though. I just added the following to .bashrc:

export LESSOPEN=""| /path/to/src-hilite-lesspipe.sh %s""
export LESS=' -R '

That script is included in the online manual for source-highlight, as well.

I guess you could alias cat to call src-hilite-lesspipe.sh $1 if you felt like ignoring cat altogether, but that might not be desirable."
Guest [Entry]

"To solve this, I used highlight. I made a function that tries to print the file with syntax highlighting, and if it fails it falls back to simply using cat to print the file. You can change the syntax highlighting theme to whatever you want.

function hl { # Overrides the cat command to use syntax highlighting
# Highlight with 'moria' theme to terminal, and suppress errors
highlight $1 -s moria -O xterm256 2> /dev/null

if (($? != 0)); then # If the command had errors
cat $1 # Just cat the file out instead
fi
}

If you're on a Mac and you use Homebrew (highly recommended!), you can install highlight by running brew install highlight. Otherwise, it should be available on most other package managers and can be downloaded here.

I also made a function to print out a file with syntax highlighting as html and open it in the browser to print (relies on the open command on OS X):

function hlprint {
# Print with line numbers and 'moria' theme
highlight $1 -l -o print.html -s moria
open print.html # Open in browser
sleep 5 # Give the browser time to open
rm print.html highlight.css # Remove output files
}

Enjoy!"