How to setup a bash diff alternative
nano -w /usr/bin/diff2
Copy and paste the below in to /usr/bin/diff2
#!/bin/bash
#
# name: diff2.sh
# usage: ./diff2.sh file1 file2
# To make available to whole system copy to /usr/local/bin
# and rename to diff2
# colorize diff output for ANSI terminals
# based on "diff2html"
# (http://www.linuxjournal.com/content/convert-diff-output-colorized-html)
# absolute color definitions
NOCOL="\e[0m"
BOLD="\e[1m"
RED="\e[31m"
BLUE="\e[34m"
PINK="\e[35m"
CYAN="\e[36m"
WHITE="\e[37m"
# style color definitions
C_COMMENT=$WHITE
C_DIFF=$RED
C_OLDFILE=$CYAN
C_NEWFILE=$RED
C_STATS=$BLUE
C_OLD=$BOLD$RED
C_NEW=$BOLD$BLUE
C_ONLY=$PINK
# check args
[[ $# -lt 2 ]] && echo "Usage: $0 file1 file2" && exit 1
# The -r option keeps the backslash from being an escape char.
diff -u $@ | while read -r s ; do
# determine line color
if [[ "${s:0:7}" == 'Only in' ]]; then color=$C_ONLY
elif [[ "${s:0:4}" == 'diff' ]]; then color=$C_DIFF
elif [[ "${s:0:3}" == '---' ]]; then color=$C_OLDFILE
elif [[ "${s:0:3}" == '+++' ]]; then color=$C_NEWFILE
elif [[ "${s:0:2}" == '@@' ]]; then color=$C_STATS
elif [[ "${s:0:1}" == '+' ]]; then color=$C_NEW
elif [[ "${s:0:1}" == '-' ]]; then color=$C_OLD
else color=
fi
# Output the line.
if [[ "$color" ]]; then
printf "$color"
echo -n $s
printf "$NOCOL\n"
else echo $s
fi
done
Now make it executable
chmod +x /usr/bin/diff2
Example Usage:
# bash -c 'diff2 < (sort file2) <(sort file1)'
