Colors for man pages (more detail):
function _colorman() { env \ LESS_TERMCAP_mb=$'\e[1;35m' \ LESS_TERMCAP_md=$'\e[1;34m' \ LESS_TERMCAP_me=$'\e[0m' \ LESS_TERMCAP_se=$'\e[0m' \ LESS_TERMCAP_so=$'\e[7;40m' \ LESS_TERMCAP_ue=$'\e[0m' \ LESS_TERMCAP_us=$'\e[1;33m' \ LESS_TERMCAP_mr=$(tput rev) \ LESS_TERMCAP_mh=$(tput dim) \ LESS_TERMCAP_ZN=$(tput ssubm) \ LESS_TERMCAP_ZV=$(tput rsubm) \ LESS_TERMCAP_ZO=$(tput ssupm) \ LESS_TERMCAP_ZW=$(tput rsupm) \ GROFF_NO_SGR=1 \ "$@" } alias man="LANG=C _colorman man" function perldoc() { command perldoc -n less "$@" |man -l -; }
Colors for grep (1;32 is bright green, see other posts here for other colors):
GREP_OPTS='--color=auto' # for aliases since $GREP_OPTIONS is deprecated GREP_COLOR='1;32' # (legacy) bright green rather than default red # (new) Matching text in Selected line = green, line numbers dark yellow GREP_COLORS="ms=${GREP_COLOR}:mc=${GREP_COLOR}:ln=33" alias grep='grep $GREP_OPTS' alias egrep='grep -E $GREP_OPTS' alias fgrep='LC_ALL=C grep -F $GREP_OPTS'
Using LC_ALL=C for fgrep can provide a 140x performance boost
More colors for GNU ls:
# use the config at ~/.dircolors if it exists, otherwise generate anew eval "$( dircolors --sh $(find ~/.dircolors -size +0 2>/dev/null) )" # Usage: _ls_colors_add BASE NEW [NEW...] # Have LS color given NEW extensions the way BASE extension is colored _ls_colors_add() { local BASE_COLOR="${LS_COLORS##*:?.$1=}" NEW if [ "$LS_COLORS" != "$BASE_COLOR" ]; then BASE_COLOR="${BASE_COLOR%%:*}" shift for NEW in "$@"; do if [ "$LS_COLORS" = "${LS_COLORS#*.$NEW=}" ]; then LS_COLORS="${LS_COLORS%%:}:*.$NEW=$BASE_COLOR:" fi done fi export LS_COLORS } _ls_colors_add zip jar xpi # archives _ls_colors_add jpg ico JPG PNG webp # images _ls_colors_add ogg opus # audio (opus now included by default) export CLICOLOR=1 # BSD auto-color trigger (like ls -G but for everything) if ls -ld --color=auto / >/dev/null 2>&1 then alias ls="ls -ph --color=auto" else alias ls="ls -ph" fi
Install grc (Generic Colouriser) and add it to your aliases:
if type grc grcat >/dev/null 2>&1; then colourify() { # using this as a function allows easier calling down lower if [[ -t 1 || -n "$CLICOLOR_FORCE" ]] then ${GRC:-grc} -es --colour=auto "$@" else "$@" fi } # loop through known commands plus all those with named conf files for cmd in g++ head ld ping6 tail traceroute6 `locate grc/conf.`; do cmd="${cmd##*grc/conf.}" # we want just the command type "$cmd" >/dev/null 2>&1 && alias "$cmd"="colourify $cmd" done # This needs run-time detection. We even fake the 'command not found' error. configure() { if [[ -x ./configure ]]; then colourify ./configure "$@" else echo "configure: command not found" >&2 return 127 fi } unalias ll 2>/dev/null ll() { if [[ -n "$CLICOLOR_FORCE" || -t 1 ]]; then # re-implement --color=auto ls -l --color=always "$@" |grcat conf.ls return ${PIPESTATUS[0]} ${pipestatus[1]} # exit code of ls via bash or zsh fi ls -l "$@" } fi
Colors for diff: Too much content for a function, use a script and alias it in your rc file (unnecessary if you installed grc):
#!/usr/bin/perl use strict; use warnings; open (DIFF, "-|", "diff", @ARGV) or die $!; my $ydiff = 1; while (<DIFF>) { if (not -t 1) { print; next; } chomp; $ydiff = 0 if /^[ <>\@+-]/ or ($. == 1 && /^\d+[a-z]{1,5}\d+$/); my $color = ""; if (! $ydiff && /^[\@+-<>]/) { $color = (/^[<-](?!--$)/ ? 1 : /^[+>]/ ? 2 : 5); } elsif ($ydiff && /\t {6}([<|>])(?:\t|$)/) { $color = ($1 eq "<" ? 1 : $1 eq ">" ? 2 : 4); } $color ? printf ("\e[1;3%dm%s\e[0;0m\n",$color,$_) : print "$_\n"; } close DIFF;
Colors for bash prompt:
# Shorten home dir, Cygwin drives, paths that are too long function PSWD() { local p="$*" space A B cols="${COLUMNS:-`tput cols 2>/dev/null || echo 80`}" p="${p/$HOME/\~}" # shrink home down to a tilde if [ -d /cygdrive ] && [ "${p#/cygdrive/?/}" != "$p" ]; then p="${p:10:1}:${p:11}" # /cygdrive/c/hi -> c:/hi fi space="$((${#USER}+${#HOSTNAME}+6))" # width w/out the path if [ "$cols" -lt 60 ]; then echo -n "$N "; space=-29; p="$p$N\b"; fi if [ "$cols" -lt "$((space+${#p}+20))" ]; then # < 20 chars for the command A=$(( (cols-20-space)/4 )) # a quarter of the space (-20 for cmd) if [ $A -lt 4 ]; then A=4; fi # 4+ chars from beginning B=$(( cols-20-space-A*2 )) # half (plus rounding) of the space if [ $B -lt 8 ]; then B=8; fi # 8+ chars from end p="${p:0:$A}..${p: -$B}" fi echo "$p" } PSC() { printf $'\[\e[%sm\]' "${*:-0;0}"; } PR="0;32" # default color used in prompt is green if [ "$(id -u)" = 0 ]; then sudo=41 # root is red background elif [ "$USER" != "${SUDO_USER:-$USER}" ]; then sudo=31 # not root, not self: red text else sudo="$PR" # standard user color fi PROMPT_COMMAND='[ $? = 0 ] && PS1=${PS1[1]} || PS1=${PS1[2]}' PSbase="$(PSC $sudo)\u$(PSC $PR)@\h $(PSC 33)\$(PSWD \w)" PS1[1]="$PSbase$(PSC $PR)\$ $(PSC)" PS1[2]="$PSbase$(PSC 31)\$ $(PSC)" PS1="${PS1[1]}" unset sudo PR PSbase

column -t --color?