mecho is marked up echo. It's a shell function for printing colored and formatted text to the terminal using a simple markup.
mecho "A [red]rose[/] is a [bg_red]rose[/] is a [red][bold][bg_yellow]rose[/]"
Or alternatively
# use it like 'echo' with no quotes
mecho boredom [bg_green]unto[/] freedom
# suppress newline at the end with the -n flag
mecho -n "[yellow][bold](User: zer0Cool)[/]"
Just copy the mecho
function into your shell's rc file.
Here it is, in full, for bash
:
mecho() {
colors=(black red green yellow blue purple cyan white)
effects=(reset bold dim italic underline blink rblink reverse)
if [ "$1" == "-n" ]; then nl=0; shift; else nl=1; fi
M="$*"; M=${M//\[\/\]/\[reset\]}
for i in "${!colors[@]}"; do
M=${M//\[${colors[$i]}\]/\\033[0;3${i}m}
M=${M//\[bg_${colors[$i]}\]/\\033[4${i}m}
M=${M//\[${effects[$i]}\]/\\033[${i}m}
done
printf -- "$M"
if [ "$nl" -eq 1 ]; then printf "\n"; fi
}
Also in this repo is the zsh
version.
Much like, echo
, mecho
takes any number of arguments and prints them to
standard output, interpreting a simple markup syntax of [tags]
to colors and effects, with an optional newline at the end.
The tags are in the form [tag]
and [/]
to reset.
Colors: black
, red
, green
, yellow
, blue
, purple
, cyan
, white
Effects: reset
, bold
, dim
, italic
, underline
, blink
, rblink
, reverse
To make a background color, prefix the color with bg_
.
To suppress the newline at the end, use the -n
flag.
To stack tags, just put them in order, like [color][effect][bg_color]
Markup inspired by rich, in turn inspired by BBCode.