.\" Copyright (c) 2023–2024 DTB <trinity@trinity.moe>
.\" Copyright (c) 2023 Emma Tebibyte <emma@tebibyte.media>
.\"
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.

.TH npc 1

.SH NAME

npc \(en show non-printing characters

.SH SYNOPSIS

npc
.RB ( -eht )

.SH DESCRIPTION

Npc reads from standard input and writes to standard output, replacing non-
printing characters with printable equivalents. Control characters print as a
carat ('^') followed by the character '@' through '_' corresponding to the
character replaced (e.g. control-X becomes "^X"). The delete character (0x7F)
becomes "^?". Characters with the high bit set (>127) are printed as "M-"
followed by the graphical representation for the same character without the
high bit set.
.PP
The
.B -e
option prints a currency sign ('$') before each line ending.
.PP
The
.B -t
option prints tab characters as "^I" rather than a literal horizontal tab.

.SH DIAGNOSTICS

Npc prints a debug message and exits with the appropriate sysexits(3) error
code in the event of an error, otherwise it exits successfully.

.SH BUGS

Npc operates in single-byte chunks regardless of intended encoding.

.SH RATIONALE

POSIX currently lacks a way to display non-printing characters in the terminal
using a standard tool. A popular extension to cat(1p), the -v option, is the
bandage solution GNU and other software suites use.

This functionality should be a separate tool because its usefulness extends
beyond that of cat(1p).

.SH AUTHOR

Written by DTB <trinity@trinity.moe>.

.SH COPYRIGHT

Copyright © 2023 DTB. License AGPLv3+: GNU AGPL version 3 or later
<https://gnu.org/licenses/agpl.html>.

.SH SEE ALSO

cat(1p), cat-v(1)

.I UNIX Style, or cat -v Considered Harmful
by Rob Pike