Actions Status MetaCPAN Release

NAME

ansiecho - Echo command with ANSI terminal code

VERSION

Version 0.01

SYNOPSIS

ansiecho -c S d -c S i -c S g -c S i -c S t -c S a -c S l

ansiecho -c R Red -c K/Y 'Black on Yellow' -c FSDB BlinkReverseBoldBlue

ansiecho -f '[ %12s ]' -c SR -f '%+06d' 123

DESCRIPTION

ECHO

ansiecho print arguments with ANSI terminal escape sequence according to the given color specification.

In a simple case, ansiecho behave exactly same as echo command.

ansiecho a b c

Like echo command, option -n disables to print newline at the end. Option -j (or --join) removes white space between arguments.

COLOR

You can specify color of each argument by preceding with -c option:

ansiecho -c R a -c GI b -c BD c

This command print strings a, b and c according to the color spec of R (Red), GI (Green Italic) and BD (Blue Bold) respectively. This can be written as below too.

ansiecho -cR a -cGI b -cBD c

ansiecho -c:R:a -c:GI:b -c:BD:c

Foreground/Background color can be specified by 8+8 standard colors, 24 gray scales, 6x6x6 216 colors, RGB values or color names, with special effects such as I (Italic), D (Double-struck; Bold), S (Stand-out; Reverse Video) and such.

Color example:

RGB  6x6x6    12bit      24bit           color name
===  =======  =========  =============  ==================
B    005      #00F       (0,0,255)      <blue>
 /M     /505      /#F0F   /(255,0,255)  /<magenta>
K/W  000/555  #000/#FFF  000000/FFFFFF  <black>/<white>
R/G  500/050  #F00/#0F0  FF0000/00FF00  <red>/<green>
W/w  L03/L20  #333/#ccc  303030/c6c6c6  <dimgrey>/<lightgrey>

More information is described in "COLOR SPEC" section.

12bit/24bit colors are converted to 216 colors because most terminal can not display them. If you are using full-color terminal, such as iTerm2 on Mac, use --rgb24 option or set GETOPTEX_RGB24 environment variable to produce full-color sequence.

FORMAT

Format string can be specified with -f option, and it behaves like a printf command.

ansiecho -f '[ %5s : %5s : %5s ]' -c R RED -c G GREEN -c B BLUE

You can use backslash escape characters in the format string. See "STRING LITERAL" section.

Formatted result becomes a single argument, and can be a subject of other operation. In next example, numbers are formatted, colored, and gave to other format.

ansiecho -f '\N{ALARM CLOCK} %s' -c KF/544 -f ' %02d:%02d:%02d ' 1 2 3

Formatting is done by Perl sprintf function. See "sprintf" in perlfunc for detail.

ANSI SEQUENCE

With normal usage, ansiecho print given argument with introducer and reset sequences.

To get just a desired sequence, use -s option. Next example produce ANSI terminal sequence to indicate deeppink color with lightyellow background.

ansiecho -n -s '<deeppink>/<lightyellow>'

You will get the next result with 256-color terminal:

^[[38;5;198;48;5;230m

and the next with full-color terminal:

^[[38;2;255;20;147;48;2;255;255;224m

Option -z does almost same thing, but it append a sequence to the final argument. Next two commands are equivalent.

ansiecho -c R Red
ansiecho -s R Red -z ZE

Color spec ZE produces RESET and ERASE LINE sequence.

Because -s and -z does not produce RESET sequence, you can use them to accumulate the effects.

ansiecho -s R R -s U RU -s I RUI -s S RUIS -s F RUISF -z Z

OPTIONS

STRING LITERAL

This is a backslash escape samples described in "Quote and Quote-like Operators" in perlop.

Sequence     Description
\t           tab               (HT, TAB)
\n           newline           (NL)
\r           return            (CR)
\f           form feed         (FF)
\b           backspace         (BS)
\a           alarm (bell)      (BEL)
\e           escape            (ESC)
\x{263A}     hex char          (example: SMILEY)
\x1b         restricted range hex char (example: ESC)
\N{name}     named Unicode character or character sequence
\N{U+263D}   Unicode character (example: FIRST QUARTER MOON)
\c[          control char      (example: chr(27))
\o{23072}    octal char        (example: SMILEY)
\033         restricted range octal char  (example: ESC)

COLOR SPEC

This is a brief summary. Read "COLOR SPEC" in Getopt::EX::Colormap for complete description.

Color specification is a combination of single uppercase character representing 8 colors, and alternative (usually brighter) colors in lowercase :

R  r  Red
G  g  Green
B  b  Blue
C  c  Cyan
M  m  Magenta
Y  y  Yellow
K  k  Black
W  w  White

or RGB values and 24 grey levels if using ANSI 256 or full color terminal :

(255,255,255)      : 24bit decimal RGB colors
#000000 .. #FFFFFF : 24bit hex RGB colors
#000    .. #FFF    : 12bit hex RGB 4096 colors
000 .. 555         : 6x6x6 RGB 216 colors
L00 .. L25         : Black (L00), 24 grey levels, White (L25)

or color names enclosed by angle bracket :

<red> <blue> <green> <cyan> <magenta> <yellow>
<aliceblue> <honeydue> <hotpink> <mooccasin>
<medium_aqua_marine>

with other special effects :

N    None
Z  0 Zero (reset)
D  1 Double-struck (boldface)
P  2 Pale (dark)
I  3 Italic
U  4 Underline
F  5 Flash (blink: slow)
Q  6 Quick (blink: rapid)
S  7 Stand-out (reverse video)
V  8 Vanish (concealed)
X  9 Crossed out

E    Erase Line

;    No effect
/    Toggle foreground/background
^    Reset to foreground
~    Cancel following effect

Samples:

RGB  6x6x6    12bit      24bit           color name
===  =======  =========  =============  ==================
B    005      #00F       (0,0,255)      <blue>
 /M     /505      /#F0F   /(255,0,255)  /<magenta>
K/W  000/555  #000/#FFF  000000/FFFFFF  <black>/<white>
R/G  500/050  #F00/#0F0  FF0000/00FF00  <red>/<green>
W/w  L03/L20  #333/#ccc  303030/c6c6c6  <dimgrey>/<lightgrey>

INSTALL

CPANMINUS

From CPAN archive:

$ cpanm App::ansiecho
or
$ curl -sL http://cpanmin.us | perl - App::ansiecho

From GIT repository:

cpanm https://github.com/kaz-utashiro/App-ansiecho.git

BUGS

Format string can not made by -f option. Next command does not work as you may expect.

ansiecho -f -f '%%%ds' 16 hello

Next one works, though.

ansiecho -f '%*s' 16 hello

SEE ALSO

"Quote and Quote-like Operators" in perlop

Getopt::EX::Colormap

https://en.wikipedia.org/wiki/ANSI_escape_code

Graphics::ColorNames::X

https://en.wikipedia.org/wiki/X11_color_names

App::ansifold, App::ansicolumn

AUTHOR

Kazumasa Utashiro

LICENSE

Copyright 2021 Kazumasa Utashiro.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.