Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/orc/secho

A sick horrible parody of GNU feature creep
https://github.com/orc/secho

Last synced: about 1 month ago
JSON representation

A sick horrible parody of GNU feature creep

Awesome Lists containing this project

README

        

**Secho** was inspired by a post to the [Plan 9][] mailing list,
where, after a round of bashing on the Unix implementation of [`echo`][echo],
the discussion went to bashing a hypothetical FSF-style implementation of `echo`
and eventually to:

> > ##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.

"_Oh ho_," said I, "_A challenge!_"