Linux repositories inspector

utfout(1)

User Commands
2012-09-10

utfout

Utility to produce UTF-8 (Unicode) output

NAME

utfout - utility for producing UTF-8 output to standard streams and terminal.

SYNOPSIS

utfout [OPTION]... [STRING]...

DESCRIPTION

Echo strings to specified output stream(s).

OPTIONS

-a, --intra-char=lt;chargt;
Insert specified character (which may be a 1-character escape character) between all output characters.
-b, --intra-pause=lt;delaygt;
Pause between writing each character.
-e, --stderr
Write subsequent strings to standard error (file descriptor 2).
-h, --help This help text.
-i, --interpret
Interpret escape characters (default).
-l, --literal
Write literal strings only (disable escape characters).
-o, --stdout
Write subsequent strings to standard output (file descriptor 1).
-p, --prefix=lt;prefixgt;
Use lt;prefixgt; as escape prefix (default=’\’).
-r, --repeat=lt;repeatgt;
Repeat previous value lt;repeatgt; times.
-s, --sleep=lt;delaygt;
Sleep for lt;delaygt; amount of time.
-t, --terminal
Write subsequent strings directly to terminal.
-u, --file-descriptor=lt;fdgt; Write to specified file descriptor.
-x, --exit=lt;numgt;
Exit with value lt;numgt;.

ESCAPE CHARACTERS

utfout recognises C-style escape sequences as used by printf(1)
. By default an escape sequence is introduced by the backslash character (\(aq\\(aq), however this may be changed with the -p option. utfout also supports some additional sequences:
\0 - nul byte (hex value 0x00)
\a - alert (bell)
\b - backspace
\c - no further output
\e - escape character (used for changing terminal attributes)
\f - form feed
\g - generate pseudo-random printable character
\n - newline
\oNNN - byte with octal value NNN (1 to 3 digits)
\r - carriage return
\t - horizontal tab
\uNNNN - 2 byte Unicode (ISO/IEC 10646) character with hex value NNNN (4 digits)
\UNNNNNNNN
- 4 byte Unicode (ISO/IEC 10646) character with hex value NNNNNNNN (8 digits)
\v - vertical tab
\xNN - byte with hexadecimal value NN (1 to 2 digits)

RANGE ESCAPES

utfout also supports range escapes which allow a range of characters to be specified in a compact format.
\{N..N} - specify a range by two 1-byte literal characters.
\{oNNN..oNNN}
- specify a range by two 3-byte octal values.
\{uNNNN..uNNNN}
- specify a range by two 2-byte Unicode values.
\{UNNNNNNNN..UNNNNNNNN}
- specify a range by two 4-byte Unicode values.
\{xNN..xNN}
- specify a range by two 2-byte hex values.
Note that ranges take two values of the same type and the maximum width for that type must be specified.

NOTES

o Arguments are processed in order.
o With the exception of ’-x’, arguments may be repeated any number of times.
o All output will be sent to standard output until an output redirection option is specified that changes the output stream (namely -e or -t (or their long-option equivalents), or if output has already been redirected -o (or its long-option equivalent)).
o If lt;strgt; is the empty string ("" or \(aq\(aq) it will be treated as \0 such that a nul byte will be displayed.
o To cancel the effect of -a, specify a null string: -a \(aq\(aq.
o If lt;repeatgt; is ’-1’, repeat forever.
o Replace the ’Z’ in the range formats above with the appropriate characters.
o Ranges can be either ascending or descending.
o lt;delaygt; can take the following forms where lt;numgt; is a positive integer:
lt;numgt;ns : nano-seconds (1/1,000,000,000 second)
lt;numgt;us : micro-seconds (1/1,000,000 second)
lt;numgt;ms : milli-seconds (1/1,000 second)
lt;numgt;cs : centi-seconds (1/100 second)
lt;numgt;ds : deci-seconds (1/10 second)
lt;numgt;s  : seconds
lt;numgt;m  : minutes
lt;numgt;h  : hours
lt;numgt;h  : days
lt;numgt;   : seconds

If lt;numgt; is -1, wait until any signal is received. If signal is SIGNUM continue, else exit immediately.
o Generated printable random characters may not display unless you are using an appropriate font.

EXAMPLES

 # Print "foofoofoo" to stderr, followed by "barbar" to stdout.
 utfout "foo" -r 2 -o "bar" -r 1

 # Write 50 nul bytes direct to the terminal.
 utfout -t "" -r 49

 # Write continuous stream of nul bytes direct to the terminal,
 # 1 per second.
 utfout -b 1s -t ’’ -r -1

 # Display a greeting slowly (as a human might type)
 utfout -b 20cs "Hello, $USER.\n"

 # Display a "spinner" that loops 4 times.
 utfout -b 20cs -p % "%r|%r/%r-%r\%r" -r 3

 # Display all digits between zero and nine with a trailing
 # newline.
 utfout "\{0..9}\n"

 # Display slowly the lower-case letters of the alphabet,
 # backwards without a newline.
 utfout -b 1ds "\{z..a}"

 # Display upper-case ’ABC’ with newline.
 utfout ’\u0041\u0042\u0043\n’

 # Display ’foo’ with newline.
 utfout ’\o146\u006f\x6F\n’

 # Clear the screen.
 utfout ’\n’ -r $LINES

 # Write hello to stdout, stderr and the terminal.
 utfout ’hello’ -t -r 1 -e -r 1

 # Display upper-case letters of the alphabet using octal
 # notation, plus a newline.
 utfout "\{\o101..\o132}"

 # Display ’h.e.l.l.o.’ followed by a newline.
 utfout -a . "hello" -a ’’ "\n"

 # Display upper-case and lower-case letters of the alphabet
 # including the characters in-between, with a trailing newline.
 utfout "\{A..z}\n"

 # Display lower-case alphabet followed by reversed lower-case alphabet
 # with the digits zero to nine, then nine to zero on the next line.
 utfout "\{a..z}\{z..a}\n\{0..9}\{9..0}\n"

 # Display lower-case Greek letters of the alphabet.
 utfout "\{α..ω}"

 # Display cyrillic characters.
 utfout "\{Ѐ..ӿ}"

 # Display all printable ASCII characters using hex range:
 utfout "\{\x21..\x7e}"

 # Display all printable ASCII characters using 2-byte UTF-8 range:
 utfout "\{\u0021..\u007e}"

 # Display all printable ASCII characters using 4-byte UTF-8 range:
 utfout "\{\\U00000021..\U0000007e}"

 # Display all braille characters.
 utfout "\{\u2800..\u28FF}"

 # Display ’WARNING’ in white on red background.
 utfout ’\e[37;41mWARNING\e[0m\n’

 # Generate 10 random characters.
 utfout ’\g’ -r 9

AUTHOR

Written by James Hunt <>

COPYRIGHT

Copyright © 2012 James Hunt <>

LICENSE

GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
⇧ Top