Shell Tips: Difference between revisions
Jump to navigation
Jump to search
(→Color in Shell: color manpages) |
(Move to Linux tips) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
#REDIRECT[[Linux Tips]] |
|||
== Color in Shell == |
|||
Some tips to provide a more colorful shell experience. |
|||
* '''cat''' with color syntax highlighting |
|||
* Colored diff '''colordiff''' |
|||
* Color with '''git''' |
|||
* Preserve color with '''less''' |
|||
* Colors in '''man''' pages (using ''less'' as pager) |
|||
* Vim-based color viewer '''view''' |
|||
=== <tt>cat</tt> === |
|||
The example below creates a script '''ccat''', similar to ''cat'' but with syntax highlighting (using ''source-highlight'', ref [http://superuser.com/questions/84426/is-there-any-option-let-cat-command-output-with-color]): |
|||
* Define a script '''<tt>ccat</tt>''': |
|||
<source lang="bash"> |
|||
#!/bin/bash |
|||
src-hilite-lesspipe.sh $1 |
|||
</source> |
|||
* The included ''less'' script is also nice. Add to your <tt>.bashrc</tt>: |
|||
<source lang="bash"> |
|||
export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s" |
|||
export LESS=FRX # At least R! |
|||
</source> |
|||
Some examples |
|||
<source lang="bash"> |
|||
ccat file.c |
|||
ccat file.c | less -FRX |
|||
</source> |
|||
There are some alternatives to ''source-highlight''. For instance on Ubuntu: |
|||
* <tt>python-pygments</tt> |
|||
* <tt>[http://www.palfrader.org/code2html/ code2html]</tt> |
|||
* <tt>highlight</tt> |
|||
* <tt>[http://www.gnu.org/software/src-highlite/ source-highlight]</tt> (a dependency of ''qgit'') |
|||
=== <tt>colordiff</tt> === |
|||
'''colordiff''' is a Perl wrapper around ''diff'' to show diff outputs in color: |
|||
<source lang="bash"> |
|||
colordiff file1 file2 # Diff in colors |
|||
alias diff="colordiff -W ${COLUMNS:-130}" # Handy alias that also adds auto-width |
|||
</source> |
|||
Note that ''colordiff'' output can be piped through ''less'', or ''colordiff'' can also take a diff as standard input: |
|||
<source lang="bash"> |
|||
colordiff file1 file2 | less -FSRX # Page output |
|||
<patchfile colordiff # Colorize stdin |
|||
</source> |
|||
=== <tt>git</tt> === |
|||
See [[Git#Configuration|Git (configuration section)]]. |
|||
=== <tt>less</tt> === |
|||
Use option '''-R''' to preserve ANSI color escape sequence in input: |
|||
<source lang="bash"> |
|||
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 |
|||
</source> |
|||
In ''git'', ''less'' is called with the following option: |
|||
<source lang="bash"> |
|||
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) |
|||
</source> |
|||
=== <tt>man</tt> === |
|||
Reference: [http://nion.modprobe.de/blog/archives/569-colored-manpages.html] |
|||
Do the following to enable color in manpages with ''less'' as pager (not ''more'', which has some other limitations!): |
|||
<source lang="bash"> |
|||
mkdir ~/.terminfo/ |
|||
cd ~/.terminfo |
|||
wget http://nion.modprobe.de/mostlike.txt # Get the new terminfo description |
|||
tic mostlike.txt # Compile it using terminfo entry-description compiler |
|||
</source> |
|||
Now just define the following alias in your <tt>~/.bashrc</tt>: |
|||
<source lang="bash"> |
|||
alias man="TERMINFO=~/.terminfo TERM=mostlike PAGER=LESS LESS=C man" # LESS=C can be skipped or adapted |
|||
</source> |
|||
=== <tt>view</tt> === |
|||
''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 <code>view -</code> to view standard input: |
|||
<source lang="bash"> |
|||
view file.c # Detect .c format from filename |
|||
git diff HEAD^ | view - # Git - Will detect diff format from content |
|||
svn diff | view - # Svn - idem |
|||
</source> |
|||
== Pager == |
|||
;Manpages |
|||
* By default uses <tt>pager -s</tt> |
|||
** <tt>/usr/bin/pager</tt> is a symlink to <tt>/etc/alternatives/pager</tt>. |
|||
* Overridden by env var '''$PAGER'''. |
|||
* Overridden by env var '''$MANPAGER'''. |
|||
* Overridden by cli option '''-P pager'''. |
Latest revision as of 11:45, 21 May 2019
Redirect to: