Linux cat命令详解

使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName

说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)

参数:
  -n 或 --number 由 1 开始对所有输出的行数编号
  -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
  -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
  -v 或 --show-nonprinting

 

范例:
  cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
  cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。

范例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
  cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
  cat -b textfile1 textfile2 >> textfile3
  cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容
cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打
  cat /dev/fd0 > OUTFILE
相反的,如果想把 image file 写到软碟,请打
  cat IMG_FILE > /dev/fd0

注:
1. OUTFILE 指输出的 image 档名。
2. IMG_FILE 指 image file。
3. 若从 image file 写回 device 时,device 容量需与相当。
4. 通常用在制作开机磁片。 cat主要有三大功能:go
1.一次显示整个文件。$ cat filename ~,y6;e
2.从键盘创建一个文件。$ cat > filename 0#!7
只能创建新文件,不能编辑已有文件. :z)
3.将几个文件合并为一个文件。 $cat file1 file2 > file"t?=\

参数: p:DS
  -n 或 --number 由 1 开始对所有输出的行数编号 \r5
  -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 |,3S
  -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 !s
  -v 或 --show-nonprinting tds?O

范例: `@uq*Y
  cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 d
  cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 ;L-#pj

范例: +Hu
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 z]G=
  cat -n textfile1 > textfile2 v"z&r3
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 RG.7n
  cat -b textfile1 textfile2 >> textfile3 1M?1O
  cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容 J2fx
  cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打 {zQ
  cat /dev/fd0 > OUTFILE %W~Ik.
  相反的,如果想把 image file 写到软碟,请打 GK"d
  cat IMG_FILE > /dev/fd0 e

注: ©Newboys -- Newboys综合论坛  G
1. OUTFILE 指输出的 image 档名。 +cMcCt
2. IMG_FILE 指 image file。 Ew
3. 若从 image file 写回 device 时,device 容量需与相当。 $;28
4. 通常用在制作开机磁片。 <s


13.9. 使用 cat 来操作文件

Red Hat Linux 有一个工具程序,它能够帮助你保留简短列表,将这些列表收集起来,甚至向你透漏一点你的系统信息。

这个工具叫做 cat,它是 concatenate(连锁) 的简写,意思是合并文件。

cat 命令还会在屏幕上显示整个文件的内容(譬如,键入 cat filename.txt)。如果文件较长,它会在屏幕上飞快地滚过。要防止这一效果的发生,使用 cat filename.txt | less 命令。

一起使用管道(|)和 less 命令会一页一页地显示文件。然后,你便可以使用向上或向下的箭头键在页码中向前或向后移动。关于使用管道来合并两个不同功能的详细信息,请参阅第 13.10 节

13.9.1. 使用重导向

重导向就是使 shell 改变它所认定的标准输出,或者改变标准输出的目标。

要重导向标准输出,使用 > 符号。把 > 符号放在 cat 命令之后(或在任何写入标准输出的工具程序和应用程序之后),会把它的输出重导向到跟在符号之后的文件中。

譬如,使用 cat 自身会在屏幕上输出你所输入的内容,如同是在重复你刚键入的行。下面的例子显示了 cat 会重复你输入的每一行:

 

技术分享

图 13-5. cat 命令

要把 cat 的输出重导向到一个文件中,在 shell 提示下键入以下命令(按 [Enter] 键会把你带到一个空行):

cat > sneakers.txt

 

技术分享

图 13-6. 把输出重导向到一个文件

按 [Enter] 键转到一个空行,然后使用 [Ctrl]-[D] 键 来退出 cat

注意到图 13-6中的区别了吗?此处并没有重复显示。这是因为 cat 的标准输出已经被重导向了。重导向的地方是你刚刚制作的一个叫做 sneakers.txt 的崭新文件。

当你运行 cat 命令时,你会发现你所在目录中的文件(如果你想列举?庑┪募 ? ls)。

如前所示,你可以使用 cat 来读取文件。在提示下,键入:

cat sneakers.txt 

在你把输出重导向入文件时,请谨慎从事,因为你会很容易地覆盖一个现存文件!除非你想代替该文件,请确保你所创建的文件名与已经存在的文件名不一样。

再把输出重导向到另一个文件,暂且把它叫做 home.txt。在这个例子中,键入命令 cat > home.txt,然后按 [Enter],其后跟随:

bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!

现在,在一个空行上,使用 [Ctrl]-[D] 键组合来退出 cat

下一步,使用 cathome.txtsneakers.txt 连接起来,然后再把两个文件的输出重导向到一个叫做 saturday.txt 的新文件(你会在图 13-7 中发现一个示例)。键入下面的命令:

cat sneakers.txt home.txt > saturday.txt

 

技术分享

图 13-7. 连接文件和重导向输出

你可以看到 cat 已经把 home.txt 添加到 sneakers.txt 的结尾处。

13.9.2. 后补标准输出

你可以使用输出重导向来在一个现存文件之后添加新信息。这与你使用 > 符号相似,你是在告诉 shell 把信息发送到标准输出之外的某个地方。

然而,当你使用 >> 时,你是在给文件添加信息,而不是完全替换文件内容。

最好的解释方法是向你演示实例。我们便使用刚才已创建的两个文件(sneakers.txthome.txt),然后使用后补输出的符号把它们连接起来。你想把 home.txt 的信息添加到 sneakers.txt 的信息中去,因此键入:

cat home.txt >> sneakers.txt

现在,使用 cat sneakers.txt 的命令来检查一下。最终的输出在文件结尾处显示了 home.txt 的内容:

buy some sneakers
then go to the coffee shop
then buy some coffee
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!

你键入的命令把文件 home.txt 的输出后补到文件 sneakers.txt 中去。

通过后补输出,你利用了现存文件而不必创建新文件,从而为自己节省些时间(以及一些磁盘群集)。

现在比较一下文件 sneakers.txt 和文件 saturday.txt 的结果,你就会看到它们一模一样。要做比较,键入:

cat sneakers.txt; cat saturday.txt

这两个文件的内容都会被显示 — 先是 sneakers.txt 文件,然后是 saturday.txt 文件 (如 图 13-8 所示)。

 

技术分享

图 13-8. 串联命令和比较文件

13.9.3. 重导向标准输入

你不但可以重导向标准输出,还可以重导向标准输入。

当你使用重导向标准输入符号 < 时,你是在告诉 shell 你想使用某个文件作为命令的输入。

使用一个你已创建的文件来演示这一概念。键入:

cat < sneakers.txt

因为你用来分隔 cat 命令和文件的是小于号(<),sneakers.txt 的输出就被 cat 命令读取。

 

技术分享

图 13-9. 重导向标准输入

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。