查看文件 cat

本文详细介绍Linux下cat命令的使用方法及各种应用场景,包括文件内容显示、行号添加、内容过滤等高级技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、命令详解


1.命令说明

cat 的全称 concatenate,它是一个标准的Linux实用程序,用于查看文件的内容,而不需要在任何文本编辑器中打开它。cat 命令允许我们创建单个或多个文件、查看文件内容、连接文件和重定向终端或文件中的输出。

cat命令的另一个主要用法是将多个文件串联到一个文件中。


2.语法格式

cat       [option]      [file]
cat       [选项]         [文件名称]...

3.选项描述

DESCRIPTION
  -A, --show-all           equivalent to -vET
                           #等价于 -vET。
  -b, --number-nonblank    number nonempty output lines, overrides -n
                           #和 -n 相似,只不过对于空白行不编号。
  -e                       equivalent to -vE
                           #等价于 -vE。
  -E, --show-ends          display $ at end of each line
                           #在每行结束处显示 $。
  -n, --number             number all output lines
                           #显示输出的所有行号(空行也编号)
  -s, --squeeze-blank      suppress repeated empty output lines
                           #当有连续两行以上的空白行,就代换为一行的空白行。(压缩)
  -t                       equivalent to -vT
                           #等价于 -vT。
  -T, --show-tabs          display TAB characters as ^I
                           #将跳格字符显示为 ^I。
  -u                       (ignored)#忽略
  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB
                           #使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外。            

二、命令示例


案例1:显示文件内容#cat

root@centos7 app]#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

案例2:查看多个文件的内容

[root@centos7 app]#cat f1
word
1234
[root@centos7 app]#cat f2
hello linux
[root@centos7 app]#cat f1 f2
word
1234
hello linux

案例3:创建文件

[root@centos7 app]#cat > 222
1
2
3
4
[root@centos7 app]#cat 222
1
2
3
4

输入 cat > 222 命令后,用户输入所需文本,然后按 CTRL+D 退出。输入的文本将写在222文件。


案例4:把文件内容加上行号#cat -n

[root@centos7 app]#cat -n f1
     1	word
     2	1234
     3	aaaaa
     4	bbbbb

案例5:把文件内容加上行号(空白行不加)#cat -b

[root@centos7 app]#cat -b ls.log 
     1	config-3.10.0-1160.el7.x86_64
     2	efi
     3	grub
     4	grub2
     5	initramfs-0-rescue-874f8277327c49909f43ada8b702796f.img
     6	initramfs-3.10.0-1160.el7.x86_64.img
     7	initramfs-3.10.0-1160.el7.x86_64kdump.img
     8	symvers-3.10.0-1160.el7.x86_64.gz
     9	System.map-3.10.0-1160.el7.x86_64
    10	vmlinuz-0-rescue-874f8277327c49909f43ada8b702796f
    11	vmlinuz-3.10.0-1160.el7.x86_64



案例6:将多个文件按序输出追加到另一个文件

[root@centos7 app]#cat f1 f2 ls.log >>f5
[root@centos7 app]#cat -n f5
     1	word
     2	1234
     3	aaaaa
     4	bbbbb
     5	hello linux
     6	config-3.10.0-1160.el7.x86_64
     7	efi
     8	grub
     9	grub2
    10	initramfs-0-rescue-874f8277327c49909f43ada8b702796f.img
    11	initramfs-3.10.0-1160.el7.x86_64.img
    12	initramfs-3.10.0-1160.el7.x86_64kdump.img
    13	symvers-3.10.0-1160.el7.x86_64.gz
    14	System.map-3.10.0-1160.el7.x86_64
    15	vmlinuz-0-rescue-874f8277327c49909f43ada8b702796f
    16	vmlinuz-3.10.0-1160.el7.x86_64

将多个文件合并为一个文件。
文件的顺序决定决定内容追加的顺序

注意:
>是重定向到文件中,会覆盖
>>是追加内容,不会覆盖


案例7:复杂用法,内容过滤

[root@centos7 app]#cat -n f5 | grep vm   #包含vm
    15	vmlinuz-0-rescue-874f8277327c49909f43ada8b702796f
    16	vmlinuz-3.10.0-1160.el7.x86_64
[root@centos7 app]#cat -n f5 | grep -v vm   #不包含vm
     1	word
     2	1234
     3	aaaaa
     4	bbbbb
     5	hello linux
     6	config-3.10.0-1160.el7.x86_64
     7	efi
     8	grub
     9	grub2
    10	initramfs-0-rescue-874f8277327c49909f43ada8b702796f.img
    11	initramfs-3.10.0-1160.el7.x86_64.img
    12	initramfs-3.10.0-1160.el7.x86_64kdump.img
    13	symvers-3.10.0-1160.el7.x86_64.gz
    14	System.map-3.10.0-1160.el7.x86_64

案例8:配合more和less参数使用,翻页

# cat a.txt | more
# cat a.txt | less

案例9:在文件末尾显示$

[root@centos7 app]#cat -e f1
word$
1234$
aaaaa$
bbbbb$

案例10:反向显示内容 #tac

[root@centos7 app]#cat f1
word
1234
aaaaa
bbbbb
[root@centos7 app]#tac f1
bbbbb
aaaaa
1234
word

案例11:脚本中的灵活用法

在脚本中经常见到类似于cat << EOF的语句,EOF是“end of file”,表示文本结束符,是常用做法。

[root@centos7 app]#cat <<EOF >> cat.txt

> hello              #输入模式,输入内容
> i am JJ            #输入模式,输入内容
> nice               #输入模式,输入内容
> EOF                #结束符,输入完就退出输入模式

另一种写法

[root@centos7 app]#cat  >> cat.txt<<EOF
> 1
> EOF

EOF在这里没有特殊的含义,可以使用任意字符,任意数量、大小写。
可以把EOF替换成其他东西,意思是把结束符内容当作标准输入的结束。


几种常见的使用方式及其作用:

1、cat <<EOF,以EOF输入字符为标准输入结束:
2、cat > filename,创建文件,并把标输入文本到filename文件中,以ctrl+d作为输入结束。
注意:此处输入时是没有’>‘的。
3、cat>filename<<EOF,以EOF字符作为输入结束,和ctrl+d的作用一样。
注意:此处输入时是有’>'的。


案例12:利用重定向清空文件

如果一个文件有很多内容,而你想要清空的话,可以使用上面提到的命令形式cat >cat.txt <<EOF

[root@centos7 app]#cat cat.txt 
hello
i am JJ
nice
1
[root@centos7 app]#cat <<EOF > cat.txt 
> 11
> EOF
[root@centos7 app]#cat cat.txt 
11

案例13:特殊字符输入$

利用cat命令生成一些 Shell 脚本文件,会使用到$。这个时候如果直接写 $ 符号,有可能被认为是调用变量,导致无法写入文件。

示例:

[root@centos7 app]#cat <<EOF > cat.txt 
> DATE=$(date +%F)
> mkdir /app/$DATE
> EOF
[root@centos7 app]#cat cat.txt 
DATE=2022-12-13       
mkdir /app/
#第一行输入的带$的字符没有显示出来

可以看见第一行 $ 符号并没有输入到文件中。

如果需要正确的输入到文本中,就要在 $ 符号前面加 \

[root@centos7 app]#cat <<EOF>cat.txt

> DATE=\$(date + %F)
> mkdir /app/\$DATE
> EOF
[root@centos7 app]#cat cat.txt 
DATE=$(date + %F)
mkdir /app/$DATE

这样把 $ 转义,就可以得到正常的文件内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cyan_Jiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值