目录
首页 笔记 详情

linux cat命令详解(linux常用基本命令参数)


cat ( concatenated 的简写) 命令是最广泛使用的命令之一,它的主要功能是从文件读取数据并输出到终端上,我们可以使用它创建、查看、合并文件

语法

cat [OPTION]... [FILE]...

cat的语法比较简单,下面主要说下具体的用法吧

查看内容

这个是大部分人都会使用, cat 后面接文件名就可以查看文件内容了

[root@ecs-centos-7 ~]# cat b.txt 
abcde
fghij
12345
09876
[root@ecs-centos-7 ~]# cat c.txt 
这是测试de文件
哈哈哈
  • 同时查看多个文件内容

上面是查看单个文件,需要同时查看多个文件的话,cat 后面接文件名列表(文件名之间用空格隔开)即可,下面是同时查看 b.txt 以及 c.txt 的例子

[root@ecs-centos-7 ~]# cat b.txt c.txt
abcde
fghij
12345
09876
这是测试de文件
哈哈哈
  • -E | -T 选项

这几个选项使用频率很低,简单介绍下

-E: 输出的时候每一行都以 $ 结尾
-T: 输出的时候每一行中的Tab键替换成 ^I 字符

下面是 -E 以及 -T 选项的例子

[root@ecs-centos-7 ~]# cat c.txt 
这是测 试de文件
哈哈    大笑
[root@ecs-centos-7 ~]# cat -E c.txt 
这是测 试de文件$
哈哈    大笑$
[root@ecs-centos-7 ~]# cat -T c.txt 
这是测 试de文件
哈哈^I大笑
[root@ecs-centos-7 ~]# cat -ET c.txt 
这是测 试de文件$
哈哈^I大笑$
  • 输出行号

上面 b.txt 有4行内容,如何在每一行内容前面显示对应的行号呢,-n 选项可以解决这个问题,请看下面的例子

[root@ecs-centos-7 ~]# cat -n b.txt 
     1  abcde
     2  fghij
     3  12345
     4  09876
  • -n 和 -b 选项

-b 选项和 -n 选项很相似,唯一的区别是 -b 选项只对非空白行计数,而 -n 选项是对所有行都计数的

我们把 b.txt 第二行和第三行之间空出一行,然后分别用 -n 和 -b 选项查看文件内容

b.txt 文件内容如下:

[root@ecs-centos-7 ~]# cat b.txt 
abcde
fghij

12345
09876

使用 -n 查看文件内容

[root@ecs-centos-7 ~]# cat -n b.txt 
     1  abcde
     2  fghij
     3
     4  12345
     5  09876

使用 -b 查看文件内容

[root@ecs-centos-7 ~]# cat -b b.txt 
     1  abcde
     2  fghij

     3  12345
     4  09876

从上面的例子中可以看出, -n 和 -b 唯一的区别就是在空行的计数上, -n 对空行计数,而 -b 对空行不计数

  • 控制重复的空行输出

有时候一个文件中有多个空行,使用 -s 选项可以只输出一个空行

[root@ecs-centos-7 ~]# cat b.txt 
abcde
fghij



12345
09876
[root@ecs-centos-7 ~]# cat -s b.txt 
abcde
fghij

12345
09876

上面的例子中, b.txt 第三、四、五行都是空行,使用 -s 选项的输出中只有第三行是空行,忽略掉第四、五行的空行

分页查看内容

有时候一个文件太大了,终端屏幕显示不下,使用 cat 会输出所有内容,后面的内容会把前面的顶掉,这时我们可以结合 more 命令(后面的文章会介绍)进行分页查看文件内容

我们以系统日志文件( /var/log/messages )为例来说明

[root@ecs-centos-7 ~]# ls -lh /var/log/messages
-rw------- 1 root root 6.1K Jul 19 15:31 /var/log/messages
[root@ecs-centos-7 ~]# 
[root@ecs-centos-7 ~]# 
[root@ecs-centos-7 ~]# 
[root@ecs-centos-7 ~]# cat /var/log/messages | more
Jul 19 03:10:01 ecs-centos-7 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7" x-pid="761" x-info="http://www.rsyslog.
com"] rsyslogd was HUPed
Jul 19 03:10:01 ecs-centos-7 systemd: Removed slice User Slice of root.
Jul 19 04:01:01 ecs-centos-7 systemd: Created slice User Slice of root.
Jul 19 04:01:01 ecs-centos-7 systemd: Started Session 2507 of user root.
Jul 19 04:01:01 ecs-centos-7 systemd: Removed slice User Slice of root.
Jul 19 05:01:01 ecs-centos-7 systemd: Created slice User Slice of root.
Jul 19 07:01:01 ecs-centos-7 systemd: Created slice User Slice of root.
Jul 19 07:01:01 ecs-centos-7 systemd: Started Session 2510 of user root.
Jul 19 07:01:01 ecs-centos-7 systemd: Removed slice User Slice of root.
Jul 19 08:01:01 ecs-centos-7 systemd: Created slice User Slice of root.
Jul 19 08:01:01 ecs-centos-7 systemd: Started Session 2511 of user root.
--More--

上面的例子中,用 cat 查看系统日志并把日志内容通过管道传输到 more 命令那里, more 命令会对内容做分页输出,上面的输出末尾的 --More-- 字样表示查看的文件有多页,使用 空格键进行翻页,Enter 键显示下一行, Q 键退出分页模式

创建文件

使用以下命令可以创建一个新文件

[root@ecs-centos-7 ~]# cat > t.txt
this is a test file
^C
[root@ecs-centos-7 ~]# cat t.txt 
this is a test file

注意:

  • 如果 t.txt 不存在,则创建文件并输入文件内容,按 Ctrl + C 结束
  • 如果 t.txt 已经存在, 输入的内容会覆盖现有内容
  • 如果想往 t.txt 追加内容,请使用 cat >> t.txt

合并文件

使用以下命令可以把多个文件内容合并到一个文件中

[root@ecs-centos-7 ~]# cat a.txt 
123
xxabc
[root@ecs-centos-7 ~]# cat b.txt 
abcde
fghij
12345
09876
[root@ecs-centos-7 ~]# cat c.txt 
这是测 试de文件
哈哈    大笑
[root@ecs-centos-7 ~]# cat a.txt b.txt c.txt > t.txt 
[root@ecs-centos-7 ~]# cat t.txt 
123
xxabc
abcde
fghij
12345
09876
这是测 试de文件
哈哈    大笑

上面的例子是把 a.txt 、b.txt 、c.txt 内容按顺序合并到 t.txt 中


写笔记

咨询

您的电子邮箱地址不会被公开。