#!/bin/bash _qColHelp() { echo 'Quick shell COLOrizer Package Source me in BASH! Version 2017.08.17.0 Examples: source qolop # load functions - As functions: _title(){ _qCol z G; } _z(){ _qCol z; } _title; echo Title; _z - As variables TITLE=$( _qCol z G; ) Z=$( _qCol z; ) echo ${TITLE}Title${Z} - Export to variables (prefixed with _c. Also the default) _qCol export _c echo -e ${_cG}Title${_cZ} ' } _qCol() { # print "easier" mapping of ANSI colors and controls local K="\033[1;30m" local R="\033[1;31m" local G="\033[1;32m" local B="\033[1;34m" local Y="\033[1;33m" local M="\033[1;35m" local C="\033[1;36m" local W="\033[1;37m" local k="\033[0;30m" local r="\033[0;31m" local g="\033[0;32m" local b="\033[0;34m" local y="\033[0;33m" local m="\033[0;35m" local c="\033[0;36m" local w="\033[0;37m" local bk="\033[40m" local br="\033[41m" local bg="\033[42m" local by="\033[43m" local bb="\033[44m" local bm="\033[45m" local bc="\033[46m" local bw="\033[47m" local S='\033[1m' #strong local s='\033[2m' #strong off local U='\033[4m' #underline local u='\033[24m' #underline off local z='\033[0m' #zero colors local Z='\033[0m' #zero colors local ic='\033[7m' #inverse colors local io='\033[27m' #inverse off local st='\033[9m' #strike on local so='\033[29m' #strike off local CLR='\033[2J' # Clear screen local CLREND='\033[K' # Clear to end of line local CLRBEG='\033[1K' # Clear to beginning of line local CLRSCR="$CLR"'\033[0;0H' # Clear screen, reset cursor local color_keys=" K R G B Y M C W k r g b y m c w S s U u z Z ic io st so bk br bg by bb bm bc bw CLR CLREND CLRBEG CLRSCR " [[ "$1" = "export" ]] && { local key local prefix="$2" [[ -z "$2" ]] && prefix=_c for key in $color_keys; do eval export ${prefix}${key}=\'${!key}\' done return } local arg val for ((arg=1;arg<=$#;arg++)) { val=${!arg} [[ ${color_keys} = *" $val "* ]] || { echo "No such color code '${val}'" >&2; return 1; } printf ${!val} } } _qCode() { # Enter numerical ANSI colors directly local arg val for ((arg=1;arg<=$#;arg++)) { val=${!arg} printf '\033['"${val}m" } } _qPos() { # Cursor position control local n="$2" local x="$3" [[ -z "$n" ]] && n=1 [[ -z "$x" ]] && x=1 [[ "$1" = "save" ]] && { printf '\033[s'; return; } [[ "$1" = "restore" ]] && { printf '\033[u'; return; } [[ "$1" = "up" ]] && { printf '\033['${n}'A'; return; } [[ "$1" = "down" ]] && { printf '\033['${n}'B'; return; } [[ "$1" = "right" ]] && { printf '\033['${n}'C'; return; } [[ "$1" = "left" ]] && { printf '\033['${n}'D'; return; } [[ "$1" = "lineup" ]] && { printf '\033['${n}'E'; return; } [[ "$1" = "linedown" ]] && { printf '\033['${n}'F'; return; } [[ "$1" = "col" ]] && { printf '\033['${n}'G'; return; } [[ "$1" = "abs" ]] && { printf '\033['${n}';'${x}'H'; return; } } _qClr() { # Clear screen _qCol "CLR" _qPos abs 0 0 } [[ "$0" = "${BASH_SOURCE[0]}" ]] && { _qColHelp _qCol export "_" printf "${_S}ANSI CODES AND QOLOP VARIABLES ==============================${_Z} ${_S}Fo${_U}rm${_st}at${_u}ti${_ic}ng${_Z} ${_S}==========${_Z} 0 Z Clear format 1 S ${_S}Strong ${_Z} 2 s ${_s}Off${_Z} 4 U ${_U}Underline${_Z} 24 u Off 7 ic ${_ic}Inverse${_Z} 27 io Off 9 st ${_st}Strike${_Z} 29 so Off ${_R}Co${_G}lo${_B}rs${_Z} ${_S}======${_Z} 30 k ${_k}Black ${_Z}1 K ${_K}Strong ${_Z}40 bk ${_bk}Background${_Z} 31 r ${_r}Red ${_Z}1 R ${_R}Strong ${_Z}41 br ${_br}Background${_Z} 32 g ${_g}Green ${_Z}1 G ${_G}Strong ${_Z}42 bg ${_bg}Background${_Z} 33 y ${_y}Yellow ${_Z}1 Y ${_Y}Strong ${_Z}43 by ${_by}Background${_Z} 34 b ${_b}Blue ${_Z}1 B ${_B}Strong ${_Z}44 bb ${_bb}Background${_Z} 35 m ${_m}Magenta ${_Z}1 M ${_M}Strong ${_Z}45 bm ${_bm}Background${_Z} 36 c ${_c}Cyan ${_Z}1 C ${_C}Strong ${_Z}46 bc ${_bc}Background${_Z} 37 w ${_w}White ${_Z}1 W ${_W}Strong ${_Z}47 bw ${_bw}Background${_Z} Enter raw color codes with _qCode function ${_S}Clearing and movement ${_S}=====================${_Z} 2J CLR Clear screen 2J ;H CLRSCR _qClr() Clear screen and cursor to upper left K CLREND Clear to end of line 1K CLRBEG Clear to beginning of line s _qPos save Save location u _qPos restore Restore location A _qPos up Up E _qPos lineup Up line B _qPos down Down F _qPos linedown Down line C _qPos left Left y;xH _qPos abs y x Absolute Position D _qPos right Right " }