网站搜索

如何在 Linux 中通过示例使用“cat”和“tac”命令


本文是我们的 Linux 技巧和技巧系列的一部分,在本文中我们将介绍 cat 命令(Linux 中最常用的命令)和 tac ( cat 命令的反向操作 - 以相反的顺序打印文件)以及一些实际示例。

另请阅读: Linux 中的 13 个有用的“cat”命令示例

Linux中Cat命令的基本用法

Cat 命令是 Concatenate 的缩写,是 *nix 系统中最常用的命令之一。该命令最基本的用法是读取文件并将其显示到stdout,即在终端上显示文件的内容。

cat file.txt

cat 命令的另一种用法是读取或组合多个文件并将输出发送到监视器,如以下示例所示。

cat file1.txt file2.txt file3.txt

该命令还可用于使用 “> ” Linux 重定向运算符将多个文件连接(加入)为一个文件。

cat file1.txt file2.txt file3.txt > file-all.txt

通过使用追加重定向器,您可以使用以下语法将新文件的内容添加到 file-all.txt 的底部。

cat file4.txt >> file-all.txt

cat 命令可用于将文件内容复制到新文件。新文件可以任意重命名。例如,将文件从当前位置复制到 /tmp/ 目录。

cat file1.txt > /tmp/file1.txt 

将文件从当前位置复制到 /tmp/ 目录并更改其名称。

cat file1.txt > /tmp/newfile.cfg

cat 命令的较少用法是使用以下语法创建一个新文件。完成文件编辑后,请按 CTRL+D 保存并退出新文件。

cat > new_file.txt

为了对文件的所有输出行(包括空行)进行编号,请使用 -n 开关。

cat -n file-all.txt

要仅显示每个非空行的编号,请使用 -b 开关。

cat -b file-all.txt

想要了解更多有关 Linux cat 命令的信息?然后阅读我们关于 Linux 中 13 个有用的“cat”命令示例的文章。

了解如何在 Linux 中使用 Tac 命令

另一方面,*nix 系统中一个鲜为人知且较少使用的命令是 tac 命令。 Tac 实际上是 cat 命令的反向版本(也向后拼写),它按照机器标准从底行开始到顶行打印文件的每一行输出。

tac file-all.txt

该命令最重要的选项之一由 -s 开关表示,它根据字符串或关键字将文件的内容与文件分开。

tac file-all.txt --separator "two"

接下来,tac命令最重要的用途是,它可以为调试日志文件提供很大的帮助,反转日志内容的时间顺序。

tac /var/log/auth.log

Or to display the last lines

tail /var/log/auth.log | tac
样本输出
tecmint@tecmint ~ $ tac /var/log/auth.log
pr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session closed for user root
Apr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session closed for user root
....
tecmint@tecmint ~ $ tail /var/log/auth.log | tac
Apr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session closed for user root
Apr  6 16:09:01 tecmint CRON[17714]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session closed for user root
Apr  6 16:05:01 tecmint CRON[17583]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:05:01 tecmint CRON[17582]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session closed for user root
Apr  6 16:00:01 tecmint CRON[17434]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr  6 15:55:02 tecmint CRON[17194]: pam_unix(cron:session): session closed for user root
Apr  6 15:55:01 tecmint CRON[17195]: pam_unix(cron:session): session closed for user root
...

cat命令相同,tac在操作文本文件方面表现出色,但在其他类型的文件中应该避免使用它,特别是二进制文件或第一行所在的文件表示将运行它的程序。