unicode-show(1) -- Scan and annotate suspicious Unicode characters
===============================================================

## NAME

**unicode-show** - detect and annotate non-ASCII or suspicious Unicode characters in text or files

## SYNOPSIS

**unicode-show** [*FILE*]...

## DESCRIPTION

**unicode-show** is a utility that reads text input (from standard input or files) and highlights suspicious Unicode characters, such as those outside the safe ASCII range. This tool is useful for identifying potentially malicious or misleading Unicode characters in source code, logs, or user input.

## For each suspicious character, **unicode-show** prints:
- The line it appears on, annotated with `[U+XXXX]` markers
- A description including the character (if visible), Unicode codepoint, character name, and category

### What is considered suspicious:
- Characters outside the printable ASCII range (`0x20`-`0x7E`)
- Control characters (excluding `\n` and `\t`)
- Carriage returns (`\r`), even when used in CRLF pairs
- Any character not in the standard set of ASCII letters, digits, punctuation, and trailing whitespace

### Output formatting:
- Annotations are colorized using ANSI escape codes if stdout is a terminal and the environment is color-friendly
- Red for inline `[U+XXXX]` markers
- Cyan for character metadata descriptions

## Color output is disabled if:
- The environment variable `$NOCOLOR` is set
- The environment variable `$NO_COLOR` is set to `1`
- `$TERM` is set to `dumb`
- Output is redirected (non-interactive terminal)

## OPTIONS

This tool takes no options. Any arguments are treated as file paths. If no arguments are given, input is read from standard input.

## EXIT STATUS

- **0** - No suspicious Unicode characters found
- **1** - Suspicious characters were detected
- **2** - An error occurred (e.g., file I/O or decoding failure)

## EXAMPLES

### Scan a file for suspicious characters:

```
unicode-show suspicious.txt
```

### Scan multiple files:

```
unicode-show file1.txt file2.md
```

### Scan input from a pipeline:

```
cat file1.txt | unicode-show
```

### Disable color output:

```
NOCOLOR=1 unicode-show example.txt
```

## ENVIRONMENT

- **NOCOLOR** - disables color output if set
- **NO_COLOR** - disables color output if set to `1`
- **TERM** - if set to `dumb`, disables color output

## AUTHOR

This man page has been written by Patrick Schleizer (adrelanos@whonix.org).
