if cat --version ^ /dev/null > /dev/null # GNU
	complete -c cat -s A -l show-all --description "Escape all non-printing characters"
	complete -c cat -s b -l number-nonblank --description "Number nonblank lines"
	complete -c cat -s e --description "Escape non-printing characters except tab"
	complete -c cat -s E -l show-ends --description "Display \$ at end of line"
	complete -c cat -s n -l number --description "Number all lines"
	complete -c cat -s s -l squeeze-blank --description "Never more than single blank line"
	complete -c cat -s t --description "Escape non-printing characters except newline"
	complete -c cat -s T -l show-tabs --description "Escape tab"
	complete -c cat -s v --description "Escape non-printing except newline and tab"
	complete -c cat -l help --description "Display help and exit"
	complete -c cat -l version --description "Display version and exit"
else # OS X
	complete -c cat -s b -d "Number non-blank lines"
	complete -c cat -s e -d "Display non-printing characters, and `\$' at the end of each line"
	complete -c cat -s n -d "Number all lines"
	complete -c cat -s s -d "Single spaced output by squeezing adjacent empty lines"
	complete -c cat -s t -d "Display non-printing characters, and tab characters as `^I'"
	complete -c cat -s u -d "Disable output buffering"
	complete -c cat -s v -d "Display non-printing characters so they're visible."
end