如何在 Linux / UNIX 中使用 cat 命令
cat 命令被认为是 Linux 或类 UNIX 操作系统中最常用的命令之一。本页通过基本示例和 Unix/Linux 系统的用法展示了如何使用 cat 命令。
它可用于以下目的:
- 在屏幕上显示文本文件。
- 复制文本文件。
- 合并文本文件。
- 创建新的文本文件。
cat 命令语法
语法如下:
cat filename cat options filename cat file1 file2 cat file1 file2 > newcombinedfile
显示文件内容
要读取或读取文件的内容,请输入:上述命令将显示名为/etc/passwd
$ cat /etc/passwd
的文件的内容。默认情况下,cat 会将输出发送到监视器屏幕。但是,您可以使用重定向运算符将屏幕重定向到另一个命令或文件,如下所示:
在上面的示例中,cat 命令的输出被写入 /tmp/test.txt 文件,而不是显示在监视器屏幕上。您可以使用 cat 命令本身查看 /tmp/test.txt:
$ cat /etc/passwd > /tmp/test.txt
$ cat /tmp/test.txt
连接文件
连接意味着将多个文件内容放在一起。原始文件不会被修改或删除。在此示例中,cat 将连接三个文件 /etc/hosts、/etc/resolv.conf 和 /etc/fstab 的内容副本:
$ cat /etc/hosts /etc/resolv.conf /etc/fstab
您可以使用 shell 标准输出重定向按如下方式重定向输出:
您还可以使用管道过滤数据。在此示例中,使用 shell 管道将 cat 的输出发送到 less 命令,因为文件太大,无法一次将所有文本显示在屏幕上:
$ cat /etc/hosts /etc/resolv.conf /etc/fstab > /tmp/outputs.txt
$ cat /tmp/outputs.txt
$ cat /etc/passwd | less
如何创建文件?
要创建一个名为 foo.txt 的文件,请输入:
$ cat > foo.txt
示例输出:
This is a test.
要保存并退出,请按 CONTROL 和 d 键 (CTRL+D)。请注意,如果名为 foo.txt 的文件已存在,它将被覆盖。您可以使用 >> 运算符将输出附加到同一文件:
$ cat >> bar.txt
现有的 bar.txt 文件将被保留,任何新文本都将添加到名为 bar.txt 的现有文件的末尾。要保存并退出,请按 CONTROL 和 d 键 (CTRL+D)。
如何复制文件?
cat 命令还可用于创建新文件并将现有文件中的数据传输给该文件。要复制要
$ cat oldfile.txt > newfile.txt
输出 file1 的内容,然后是标准输入,然后是 file2 的内容,请输入:
$ cat file1 - file2
连字符表示输入来自键盘。在此示例中,要创建一个新文件 file2,其中包含从键盘输入的文本,后跟 file1 的内容,请输入:
$ cat - file1 > file2
cat 命令选项
要对非空白输出行进行编号,请输入(仅适用于 GNU cat 命令版本):
$ cat -b /etc/passwd
示例输出:
1 root:x:0:0:root:/root:/bin/bash 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 3 bin:x:2:2:bin:/bin:/bin/sh 4 sys:x:3:3:sys:/dev:/bin/sh 5 sync:x:4:65534:sync:/bin:/bin/sync 6 games:x:5:60:games:/usr/games:/bin/sh 7 man:x:6:12:man:/var/cache/man:/bin/sh 8 lp:x:7:7:lp:/var/spool/lpd:/bin/sh 9 mail:x:8:8:mail:/var/mail:/bin/sh 10 news:x:9:9:news:/var/spool/news:/bin/sh
要对所有输出行进行编号,请输入(仅限 GNU cat 版本):
$ cat -n /etc/passwd
要压缩多个相邻的空白行,请输入(仅限 GNU cat 版本):
$ cat -s /etc/passwd
要显示所有非打印字符(好像它们是可见的,制表符和行尾字符除外),请输入(仅限 GNU cat 版本):
$ cat -v filename
cat 命令滥用
cat 的主要用途是连接文件。如果只有一个文件,那么什么都不连接就是浪费时间,而且会浪费您的进程。例如,
$ cat /proc/cpuinfo | grep model
可以按如下方式使用:
$ grep model /proc/cpuinfo
另一个示例,
cat filename | sed -e 'commands' -e 'commands2'
可以按如下方式使用,这样更便宜:有关更多信息,
sed sed -e 'commands' -e 'commands2' filename
请参阅cat 命令的无用用途。