# cat.1

CAT(1)

CAT(1)

FreeBSD General Commands Manual

CAT(1)

## [名称](#__u540D___u79F0_)

`cat` —

连接并打印文件

## [概要](#__u6982___u8981_)

`cat` \[`-belnstuv`] \[file ...]

## [描述](#__u63CF___u8FF0_)

`cat` 实用程序按顺序读取文件，并将它们写入标准输出。 file 操作数按命令行顺序处理。 如果 file 是单个破折号 (‘`-`’) 或不存在，则 `cat` 从标准输入读取。 如果 file 是 UNIX 域套接字，则 `cat` 连接到它，然后读取它直到 `EOF` 。 这补充了 inetd(8) 中可用的 UNIX 域绑定功能。

选项如下：

[`-b`](#b)

对非空白输出行编号，从 1 开始。

[`-e`](#e)

显示非打印字符（参见 `-v` 选项），并在每行的末尾显示一个美元符号 (‘`$`’) 。

[`-l`](#l)

在标准输出文件描述符上设置排他咨询锁。 这个锁是使用 fcntl(2) 和 `F_SETLKW` 命令设置的。 如果输出文件已经被锁定， `cat` 将阻塞直到获得锁定。

[`-n`](#n)

对输出行编号，从 1 开始。

[`-s`](#s)

挤压多个相邻的空行，导致输出为单行距。

[`-t`](#t)

显示非打印字符（参见 `-v` 选项），并将制表符显示为 ‘`^I`’ 。

[`-u`](#u)

禁用输出缓冲。

[`-v`](#v)

显示非打印字符，使其可见。 对于 control-X，控制字符打印为 ‘`^X`’ ；删除字符（八进制 0177）打印为 ‘`^?`’ 。 Non-ASCII 非 ASCII 字符（设置了高位）打印为 ‘`M-`’ （用于元），后跟低 7 位的字符。

## [退出状态](#__u9000___u51FA___u72B6___u6001_)

The `cat` utility exits 0 on success, and >0 if an error occurs.

## [实例](#__u5B9E___u4F8B_)

命令：

`cat file1`

将 file1 的内容打印到标准输出。

命令：

`cat file1 file2 > file3`

将依次将 file1 和 file2 的内容打印到文件 file3, 如果 file3 已经存在则截断它。 有关重定向的更多信息，请参见您的 shell（例如 sh(1) ）的手册页。

命令：

`cat file1 - file2 - file3`

将打印 file1 的内容，打印从标准输入接收到的数据，直到收到 `EOF` (‘^D’) 字符，打印 file2 的内容，再次读取并输出标准输入的内容，最后输出 file3 。 请注意，如果标准输入引用了一个文件，那么命令行上的第二个破折号将不起作用，因为当 `cat` 遇到第一个 ‘`-`’ 操作数时，文件的全部内容已经被读取并打印了。

## [参见](#__u53C2___u89C1_)

head(1), more(1), pr(1), sh(1), tail(1), vis(1), zcat(1), fcntl(2), setbuf(3) Rob Pike, UNIX Style, or cat -v Considered Harmful, *USENIX Summer Conference Proceedings*, 1983.

## [标准](#__u6807___u51C6_)

`cat` 实用程序符合 IEEE Std 1003.2-1992 (“POSIX.2”) 规范。

标志 \[`-belnstv`] 是规范的扩展。

## [历史](#__u5386___u53F2_)

`cat` 实用程序出现在 Version 1 AT\&T UNIX 中。 Dennis Ritchie 设计并编写了第一个手册页。 似乎是为了 `cat` 。

## [缺陷](#__u7F3A___u9677_)

由于用于执行输出重定向的 shell 语言机制，命令 “`cat file1 file2 > file1`” 将导致 file1 中的原始数据被破坏！

当 `-t` 或 `-v` 选项生效时， `cat` 实用程序无法识别多字节字符。

January 29, 2013

FreeBSD 13.1-RELEASE
