如何在Linux/UNIX中使用cat命令

时间:2020-01-09 10:40:48  来源:igfitidea点击:

如何在Linux中使用cat命令?
如何在UNIX中使用cat命令?
如何在UNIX或Linux Shell脚本中使用cat命令?

cat命令被认为是Linux或UNIX等操作系统上最常用的命令之一。
本教程显示如何将cat命令与Unix/Linux系统的基本示例和用法结合使用。

cat可以用于以下目的:

  • 在屏幕上显示文本文件。
  • 复制文本文件。
  • 合并文本文件。
  • 创建新的文本文件。

cat命令语法

语法如下:

cat filename
cat options filename
cat file1 file2
cat file1 file2 > newcombinedfile

显示文件内容

要读取或读取文件的内容,请执行:

$ cat /etc/passwd

上面的命令将显示名为/etc/passwd的文件的内容。
默认情况下,cat会将输出发送到监视器屏幕。
但是,您可以使用重定向操作符从屏幕重定向到另一个命令或文件,如下所示:

$ cat /etc/passwd > /tmp/test.txt

在上面的示例中,cat命令的输出被写入/tmp/test.txt文件,而不是显示在监视器屏幕上。
您可以使用cat命令本身查看/tmp/test.txt:

$ cat /tmp/test.txt

连接文件

串联意味着将多个文件内容放在一起。
未修改或删除原始文件。
在此示例中,cat将串联三个文件/etc/hosts、/etc/resolv.conf和/etc/fstab的内容的副本:

$ cat /etc/hosts /etc/resolv.conf /etc/fstab

您可以使用shell标准输出重定向,如下所示重定向输出:

$ cat /etc/hosts /etc/resolv.conf /etc/fstab > /tmp/outputs.txt
$ cat /tmp/outputs.txt

您也可以使用管道来过滤数据。
在此示例中,使用shell管道将cat的输出发送到less命令,因为文件太大,所有文本一次都无法显示在屏幕上:

$ 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

要输出文件1的内容,然后是标准输入,然后是文件2的内容,请执行:

$ cat file1 - file2

连字符表示从键盘输入。
在此示例中,要创建一个新文件file2,该文件包含从键盘执行的文本,然后是file1的内容,请执行:

$ cat - file1 > file2

猫命令选项

要对非空白的输出行进行编号,请输入(仅适用于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