linux cat 命令
Cat是一个相当简单的工具,旨在将文件串联并写入屏幕,这就是标准输出(stdout)。 它是根据GPLv3 +许可发布的GNU Core Utils的一部分。 您可以期望在几乎任何Linux发行版或其他Unix操作环境(例如FreeBSD或Solaris)中找到它。 cat的最简单用法是显示文件的内容。 这是一个名为hello.world的文件的示例 :
$
ls
hello.world
$
cat hello.world
Hello World
!
$
cat命令用于查看配置文件,例如/ etc目录中的配置文件。
cat命令将显示一个文件,而不会有损坏文件的风险。
如果我使用Vi或Nano等编辑器打开关键配置文件,则可能会无意间对该文件进行不必要的更改。
cat命令不是编辑器,因此不会对文件的内容进行更改。
如果需要查看更长的文件,可以使用带有更多命令的管道:
$ cat <somelongfile> | more
Cat可以同时显示多个文件。 如果我们希望看到两个文件- hello.world和goodbye.world -我们将包括文件名作为命令行参数:
$
cat hello.world goodbye.world
Hello World
!
Good Bye World
!
$
Cat也可以在输出期间为文件的行编号。 有两个命令可以执行此操作,如帮助文档中所示:
-b, --number-nonblank number nonempty output lines, overrides -n
-n, --number number all output lines
如果我将-b命令与hello.world文件一起使用,则输出的编号将如下所示:
$
cat
-b hello.world
1 Hello World
!
$
在上面的示例中,有一个空行。 我们可以使用-n参数来确定为什么出现此空行:
$
cat
-n hello.world
1 Hello World
!
2
$
现在我们看到有一个额外的空行。 这两个参数是对最终输出而不是文件内容进行操作,因此,如果我们对两个文件都使用-n选项,则编号将按以下方式计数行:
$
cat
-n hello.world goodbye.world
1 Hello World
!
2
3 Good Bye World
!
4
$
可能有用的另一个选项是-s for squeeze-blank 。 此参数告诉cat将重复的空行输出减少到一行。 当检查具有很多空行的文件时,这很有用,因为它可以有效地容纳屏幕上的更多文本。 假设我有一个文件,该文件包含三行,并由几行空行隔开,例如在本示例中, greetings.world :
$
cat greetings.world
Greetings World
!
Take me to your Leader
!
We Come
in Peace
!
$
使用-s选项可以节省屏幕空间:
$
cat
-s greetings.world
Greetings World
!
Take me to your Leader
!
We Come
in Peace
!
$
Cat通常用于将一个文件的内容复制到另一个文件。 您可能会问:“为什么不只使用cp ?” 这是我如何创建一个名为both.files的新文件,其中包含hello和goodbye文件的内容:
$
cat hello.world goodbye.world
> both.files
$
cat both.files
Hello World
!
Good Bye World
!
$
cat猫
cat命令还有另一种变体,称为zcat 。 此命令能够显示使用Gzip压缩的文件,而无需使用gunzip命令解压缩文件。 顺便说一句,这还保留了磁盘空间,这就是压缩文件的全部原因!
zcat命令更令人兴奋,因为对于花费大量时间检查系统日志文件的系统管理员而言,它可以节省大量时间。 我们在哪里可以找到压缩日志文件? 看一下大多数Linux系统上的/ var / log 。 在我的系统上, / var / log包含几个文件,例如syslog.2.gz和syslog.3.gz 。 这些文件是日志管理系统的结果,该系统旋转和压缩日志文件以节省磁盘空间并防止日志增长到难以管理的文件大小。 如果没有zcat ,则在查看它们之前必须使用gunzip命令解压缩这些文件。 幸运的是,我可以使用zcat :
$
cd
/ var
/ log
$
ls
* .gz
syslog.2.gz syslog.3.gz
$
$
zcat syslog.2.gz
|
more
Jan
30 00:02:
26 workstation systemd
[
1850
] : Starting GNOME Terminal Server...
Jan
30 00:02:
26 workstation dbus-daemon
[
1920
] :
[ session
uid =
2112
pid =
1920
] Successful
ly activated service
'org.gnome.Terminal'
Jan
30 00:02:
26 workstation systemd
[
1850
] : Started GNOME Terminal Server.
Jan
30 00:02:
26 workstation org.gnome.Terminal.desktop
[
2059
] :
# watch_fast: "/org/gno
me
/ terminal
/ legacy
/
" (establishing: 0, active: 0)
Jan 30 00:02:26 workstation org.gnome.Terminal.desktop[2059]: # unwatch_fast: "
/ org
/ g
nome
/ terminal
/ legacy
/
" (active: 0, establishing: 1)
Jan 30 00:02:26 workstation org.gnome.Terminal.desktop[2059]: # watch_established: "
/
org
/ gnome
/ terminal
/ legacy
/
" (establishing: 0)
--More--
如果我们想不间断地检查两个文件,也可以将两个文件都传递给zcat 。 由于日志轮换的工作方式,您需要以相反的顺序传递文件名,以保留日志内容的时间顺序:
$
ls
-l
* .gz
-rw-r-----
1 syslog adm
196383 Jan
31 00:00 syslog.2.gz
-rw-r-----
1 syslog adm
1137176 Jan
30 00:00 syslog.3.gz
$
zcat syslog.3.gz syslog.2.gz
|
more
cat命令看起来很简单,但非常有用。 我经常使用它。 您也不需要像真正的猫一样喂养或宠物。 与往常一样,建议您查看cat和zcat命令的手册页( man cat ),以了解有关如何使用它的更多信息。 您也可以使用--help参数来快速概述命令行参数。
翻译自: https://opensource.com/article/19/2/getting-started-cat-command
linux cat 命令