Pietro Gagliardi wrote:
The ultimate echo, actually useful, but no one wants it.
NAME
echo: echo arguments
SYNOPSIS
echo [-1abCDEeilmNnOqrtuVvwXx] [-B base] [-c cmd] [-d char] [-f
file] [-L len] [-o file] [-S voice] [-s char] [args...]
DESCRIPTION
echo outputs its arguments. It takes the following switches:
-1 One argument per line.
-a Output in ASCII. The default.
-B base Output in given base, 2..32. Unless -u also given, base >
10 shows lowercase.
-b Output in binary.
-C Don't echo anything, just print the number of fields.
-c cmd Run cmd on each argument, replacing $? with the argument
itself.
-D Output in decimal.
-d char Field delimiter. Default is end of argument.
-E Print to standard error instead of to standard output.
-e Allow escape sequences
-f file Read from file, then from command line (if any).
-i Read arguments from standard input.
-L len Line width set to len. Default is to ignore line lengths.
-l Turn uppercase to lowercase.
-m Multi-column output.
-N One field per line, numbering each field.
-n Suppress newline.
-O Output in octal.
-o file Write to file instead of standard output.
-q "Quiet mode:" redirect output to /dev/null if not to a file.
-r Print every string that matches each regular expression.
Regular expressions cannot contain + or * modifiers.
-S voice Send to speaker, having the given voice say it. If voice
is a null string, use the default voice.
-s char Separate fields with char, default space.
-t Separate fields with tabs.
-u Convert lowercase to uppercase. With -B, output in
uppercase letters for base > 10.
-V Strip non-printing characters.
-v Make non-printing characters visible.
-w If -l is given, word wrap instead of character wrap.
Otherwise, ignored.
-X Output in uppercase hexadecimal.
-x Output in lowercase hexadecimal.
Test for everyone: write this echo in as little code as possible. C or
rc is permitted. The rules:
- for C: either Standard C (no other libraries) or only libc (no
other Plan 9 libraries)
- for rc: only use programs in the core Plan 9 distribution - no
programs that I have to get myself
- match the behavior EXACTLY as above
- shortest code and fastest run time wins
Winner gets something cool.
What should it do if you mix -f and -i?