= ascii(1) =
:doctype: manpage

//spellcheck: add encodings printables ECMA POSIX stringize
//spellcheck: add metacharacters LF

== NAME ==
ascii - report character aliases

== SYNOPSIS ==
*ascii* [-d] [-x] [-o] [-h] [-v] [char-alias]

== OPTIONS ==
Called with no options, +ascii+ behaves like
"ascii -h".  Options are as follows:

-t::
  Script-friendly mode, emits only ISO/decimal/hex/octal/binary
  encodings of the character.
-s::
  Parse multiple characters.  Convenient way of parsing strings.
-a::
  Print in vertical aspect (4 columns by 16 rows) rather than
  16x4. This option combines only with -d -o -x -b and must precede them.
-d::
  Ascii table in decimal. If arguments follow, interpret them as
  decimal values and print only the corresponding character records.
-x::
  Ascii table in hex. If arguments follow, interpret them as
  hexadecimal values and print only the corresponding character records.
-o::
  Ascii table in octal. If arguments follow, interpret them as
  octal values and print only the corresponding character records.
-b::
  Ascii table in binary. If arguments follow, interpret them as
  binary values and print only the corresponding character records.
-h, -?::
  Show summary of options and a simple ASCII table.
-v::
  Show version of program.

[[description]]
== DESCRIPTION ==
Characters in the ASCII set can have many aliases, depending on
context. A character's possible names include:

* Its bit pattern (binary representation).

* Its hex, decimal and octal representations.

* Its teletype mnemonic and caret-notation form (for control
chars).

* Its backlash-escape form in C (for some control chars).

* Its printed form (for printables).

* Its full ISO official name in English.

* Its ISO/ECMA code table reference.

* Its name as an HTML/SGML entity.

* Slang and other names in wide use for it among hackers.

This utility accepts command-line strings and tries to interpret them
as one of the above.  When it finds a value, it prints _all_ of the
names of the character.  The constructs in the following list can be
used to specify character values.  If an argument could be interpreted
in two or more ways, names for all the different characters it might
be are dumped.

__character__::
  Any character not described by one of the following conventions
  represents the character itself.

^__character__::
  A caret followed by a character.

// spellcheck: add abfnrtv
\[abfnrtv0]:
  A backslash followed by certain special characters (abfnrtv).

__mnemonic__::
  An ASCII teletype mnemonic.

// spellcheck: add abcdef
__hexadecimal__::
  A hexadecimal (hex) sequence consists of one or two
  case-insensitive hex digit characters (01234567890abcdef). To ensure
  hex interpretation use one of the prefixes h, 0x, x, or \x.

__decimal__::
  A decimal sequence consists of one, two or three decimal digit
  characters (0123456789). To ensure decimal interpretation use one of
  the prefixes d, 0d, or \d.

__octal__::
  An octal sequence consists of one, two or three octal digit
  characters (01234567).  To ensure octal interpretation use one of
  the prefixes 0o, o, or \o.

// spellcheck: add bm
__bit pattern__::
  A bit pattern (binary) sequence consists of one to eight binary
  digit characters (01).  To ensure bit interpretation use one of the
  prefixes 0bm b, or \b.

__ISO/ECMA code__::
  An ISO/ECMA code sequence consists of one or two decimal digit
  characters, a slash, and one or two decimal digit characters.

__name__::
  An official ASCII or (unofficial) slang name.

:__class__: ::
  A named POSIX character class.

The slang names recognized and printed out are from a rather
comprehensive list that first appeared on USENET in early 1990 and has
been continuously updated since.  Mnemonics recognized and printed
include the official ASCII set, some official ISO names (where those
differ) and a few common-use alternatives (such as NL for LF).
HTML/SGML entity names are also printed when applicable.  All
comparisons are case-insensitive, and dashes are mapped to spaces.
Any unrecognized arguments or out of range values are silently
ignored.  Note that the <option>-s</option> option will not recognize
"long" names, as it cannot differentiate them from other parts of the
string.

For correct results, be careful to stringize or quote shell
metacharacters in arguments (especially backslash).

This utility is particularly handy for interpreting cc(1)'s ugly
octal "invalid-character" messages, or when coding anything to do with
serial communications.  As a side effect it serves as a handy
base-converter for random 8-bit values.

[[author]]
== AUTHOR ==

// spellcheck: off
Eric S. Raymond <esr@thyrsus.com>; November 1990 (home page at
<http://www.catb.org/~esr/). Ioannis E. Tambouras <ioannis@debian.org>
added command options and minor enhancements.  Brian J. Ginsbach
<ginsbach@sgi.com> fixed several bugs and expanded the man page.
David N. Welton <davidw@efn.org> added the <option>-s</option> option.
Matej Vela corrected the ISO names.  Dave Capella contributed the idea
of listing HTML/SGML entities.
// spellcheck: on

// end
