Shell Tips: Difference between revisions

From miki
Jump to navigation Jump to search
(Created page with '== Color in Shell == Some tips to provide a more colorful shell experience. * '''cat''' with color syntax highlighting * Preserve color with '''less''' * Vim-based color viewer …')
 
(→‎less: Mixed up S and R)
Line 40: Line 40:
export LESS=R # Better use env. var $LESS
export LESS=R # Better use env. var $LESS
colordiff file1 file2 | less # ... no need to give -R anymore
colordiff file1 file2 | less # ... no need to give -R anymore
export LESS=FRX # Even better
colordiff file1 file2 | less # ... quit asap if less than 1-page
</source>
</source>


Line 46: Line 48:
export lESS=FSRX # Default git options
export lESS=FSRX # Default git options
# ... F - quit if less than 1-page
# ... F - quit if less than 1-page
# ... S - preserve color
# ... S - truncate long lines
# ... R - truncate long lines
# ... R - preserve color
# ... X - don't initialize term (no clear)
# ... X - don't initialize term (no clear)
</source>
</source>

Revision as of 15:12, 28 February 2011

Color in Shell

Some tips to provide a more colorful shell experience.

  • cat with color syntax highlighting
  • Preserve color with less
  • Vim-based color viewer view
  • Colored diff colordiff

cat

The example below creates a script ccat, similar to cat but with syntax highlighting (using source-highlight, ref [1]):

  • Define a script 'ccat:
#!/bin/bash
src-hilite-lesspipe.sh $1
  • The included less script is also nice. Add to your .bashrc:
export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=FSRX                         # At least R!

Some examples

ccat file.c
ccat file.c | less -FSRX


There are some alternatives to source-highlight. For instance on Ubuntu:

less

Use option -R to preserve ANSI color escape sequence in input:

colordiff file1 file2 | less -R       # As command-line option
export LESS=R                         # Better use env. var $LESS
colordiff file1 file2 | less          # ... no need to give -R anymore
export LESS=FRX                       # Even better
colordiff file1 file2 | less          # ... quit asap if less than 1-page

In git, less is called with the following option:

export lESS=FSRX                      # Default git options
                                      # ... F - quit if less than 1-page
                                      # ... S - truncate long lines
                                      # ... R - preserve color
                                      # ... X - don't initialize term (no clear)

view

view is vim front-end document reader. view can highlight syntax of files based on their filename, but also based on their content (unlike source-highlight). Use view - to view standard input:

view file.c                          # Detect .c format from filename
git diff HEAD^ | view -              # Git - Will detect diff format from content
svn diff | view -                    # Svn - idem

colordiff

colordiff is a Perl wrapper around diff to show diff outputs in color:

colordiff file1 file2                     # Diff in colors
alias diff="colordiff -W ${COLUMNS:-130}" # Handy alias that also adds auto-width

Note that colordiff output can be piped through less, or colordiff can also take a diff as standard input:

colordiff file1 file2 | less -FSRX        # Page output
<patchfile colordiff                      # Colorize stdin

Pager

Manpages
  • By default uses pager -s
    • /usr/bin/pager is a symlink to /etc/alternatives/pager.
  • Overridden by env var $PAGER.
  • Overridden by env var $MANPAGER.
  • Overridden by cli option -P pager.