---
name: "plan9-read"
section: "1"
platform: "linux"
package: "9base"
version: "1:6-5"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/plan9-read"
---

# plan9-read(1)

catenate files

## NAME

cat, read, nobs - catenate files

## SYNOPSIS

**cat** \[ *file ...* \]\
 **read** \[ **-m** \] \[ **-n** *nline* \] \[ *file ...* \]\
 **nobs** \[ *file ...* \]

## DESCRIPTION

*Cat* reads each *file* in sequence and writes it on the standard output. Thus

-

  cat file

prints a file and

-

  cat file1 file2 \>file3

concatenates the first two files and places the result on the third.

If no *file* is given, *cat* reads from the standard input. Output is buffered in blocks matching the input.

*Read* copies to standard output exactly one line from the named *file*, default standard input. It is useful in interactive [*rc*(1)](/rc/1.md) scripts.

The **-m** flag causes it to continue reading and writing multiple lines until end of file; **-n** causes it to read no more than *nline* lines.

*Read* always executes a single **write** for each line of input, which can be helpful when preparing input to programs that expect line-at-a-time data. It never reads any more data from the input than it prints to the output.

*Nobs* copies the named files to standard output except that it removes all backspace characters and the characters that precede them. It is useful to use as **$PAGER** with the Unix version of [*man*(1)](/man/1.md) when run inside a *win* (see [*acme*(1)](/acme/1.md)) window.

## SOURCE

**/src/cmd/cat.c**\
 **/src/cmd/read.c**\
 **/bin/nobs**

## SEE ALSO

[*cp*(1)](/cp/1.md)

## DIAGNOSTICS

*Read* exits with status **eof** on end of file or, in the **-n** case, if it doesn't read *nlines* lines.

## BUGS

Beware of and which destroy input files before reading them.
