cat命令的详解:Concatenate and write files

cat是类Unix 操作系统上最常用的命令之一。取自Concatenate这个单词中的三个字母。它具有与文本文件有关的三个相关功能:显示它们,合并它们的副本以及创建新文件。

cat的一般语法是

cat [options] [filenames] [-] [filenames]

方括号表示随附的项目是可选的。

读取文件

cat的最常见用法是读取文件的内容,而cat常常是用于此目的的最方便的程序。与在显示监视器上打开文本文件查看内容同等命令是键入单词cat,后跟一个空格和文件名,然后按Enter键。例如,以下将显示名为file1的文件的内容:

cat file1

cat 的标准输出(即输出的默认目标)是监视器屏幕,通常与其他命令行(即,全文本模式)程序一样。但是,它可以从屏幕重定向,例如,重定向到要写入该文件的另一个文件或另一个命令,以用作该命令的输入。

在以下示例中,使用输出重定向操作符(由向右指向的尖括号表示)将cat的标准输出重定向到file2

cat file1 > file2

也就是说,cat的输出被写入file2而不是显示在监视器屏幕上。

相反,可以使用管道(由竖线表示)将标准输出重定向到过滤器(即,以某种有意义的方式转换数据的程序)以进行进一步处理。例如,如果文件太大而无法将所有文本同时显示在监视器屏幕上(通常是这种情况),则文本将在屏幕上高速滚动并且很难阅读。通过较少地将输出通过管道传递到滤波器即可解决此问题,即

cat file1 | less

这样,用户可以通过按空格键一次使屏幕上的文件内容前进一屏,并通过按b键向后移动。用户可以通过按q键从少退出。

cat 的标准输入(即输入数据的默认源)是键盘,就像在类Unix系统上的其他命令通常一样。也就是说,如果未指定要打开的文件,cat将读取键盘上键入的内容。

在同一行上 键入命令cat,后跟输出重定向操作符和文件名,按ENTER键移至下一行,然后键入一些文本,最后再次按ENTER键,导致将文本写入该文件。因此,在下面的示例中,第二行中键入的文本将被写入名为felines的文件中:

cat > felines
This is not about a feline.

同时终止程序并通过同时按CONTROL和d键恢复正常的命令提示符。

重复上述示例,而不使用重定向运算符并指定目标文件,即

cat
This is not about a feline.

使文本发送到标准输出,即在监视器屏幕上重复。

串联Concatenation

cat的第二个作用是串联(即串在一起)文件内容的副本。(这是cat名称的来源。)因为串联仅发生在副本上,所以对原始文件没有影响。

例如,以下命令将连接三个文件file1file2file3的内容的副本:

cat file1 file2 file3

每个文件的内容将显示在监视器屏幕上(这也是标准输出,因此是没有重定向的输出目的地),从新行开始,并且文件名出现在监视器的屏幕上。命令。使用输出重定向操作符可以很容易地使用以下命令将该输出重定向到另一个文件,例如file4

cat file1 file2 file3 > file4

在下一个示例中,cat的输出通过管道传递到sort过滤器,以便在连接之后和写入file4之前对文本行进行字母顺序化:

cat file1 file2 file3 | sort > file4

文件创建

cat的第三个用途是文件创建。对于小文件,这通常比使用vigedit或其他文本编辑器容易。通过键入cat,后跟输出重定向操作符和要创建的文件的名称,然后按Enter,最后同时按CONTROL和d键,可以完成此操作。例如,可以通过键入以下内容来创建 名为file1的新文件

cat > file1

然后按ENTER键,最后同时按CONTROL和d键。

如果已经存在一个名为file1的文件,它将被具有相同名称的新的空文件覆盖(即,其所有内容将被删除)。因此,谨慎的用户可能更喜欢使用append操作符(由两个连续的向右指向的尖括号表示),以防止意外删除。那是,

cat >> file1

也就是说,如果尝试使用cat和append运算符创建文件,并且新文件的名称与现有文件的名称相同,则实际上是保留而不是覆盖现有文件,并且还会有任何新文本被添加到现有文件的末尾。

可以在创建文件时通过按ENTER键输入文本来输入文本。可以输入任意数量的文本,包括多行文本。

cat还可以用于同时创建一个新文件,并将现有文件中的数据传输到该文件。这可以通过输入cat,输出将来自的文件的名称,输出重定向操作符以及要创建的文件的名称来完成。然后按ENTER键将创建并写入新文件。例如,键入以下内容,然后按Enter,将创建一个名为file2的新文件,其中包含file1内容的副本:

cat file1 > file2

对file1的内容没有影响。(当然,使用cp命令复制文件(即cp file1 file2)可以很容易地完成同一件事,但是上面的示例确实说明了cat的强大功能。)

只需对上述过程稍作修改,就可以创建一个新文件,并从另一个文件和键盘向其中写入文本。如果键入的文本要在输入文件中的文本之前,则在输入文件之前添加由空格包围的连字符,如果键入的文本要在输入文件中的文本之后,则在输入文件之后添加连字符。输入文件。因此,例如,要创建一个新文件file6,该文件包含从键盘键入的文本,然后是file5的内容,请首先输入以下内容:

cat – file5 > file6

或者要创建一个新的文件file8是由内容file7其次是从键盘键入的文本,首先输入以下内容:

cat file7 – > file8

在任何一种情况下,然后按Enter键移至新行并在任意行上键入所需的文本。最后,再次按ENTER,然后同时按CONTROL和d键以执行(即运行)命令。

这种cat的实际应用示例是创建套用信函(或其他文档),仅为每个接收者定制其顶部(例如,日期和姓名)。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/linux/1348.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注