目录
16. shell命令--cat
功能说明
cat 是 Linux 和其他 Unix-like 系统中常用的一个命令,用于连接并显示文件的内容。cat 的名称来源于它的主要功能,即 concatenate(连接)并显示文件内容。
语法格式
cat [OPTION]... [FILE]...
SYNOPSIS
cat [OPTION]... [FILE]...
选项说明
- -n 或 --number:对输出的所有行编号。
- -b 或 --number-nonblank:仅对非空白行进行编号。
- -s 或 --squeeze-blank:当遇到有连续两行或两行以上空白行时,只输出一个空白行。
- -E 或 --show-ends:在每行结尾处显示 $ 符号。
- -T 或 --show-tabs:将制表符显示为 ^I。
- -u 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外,还显示其他所有非打印字符。
- -v 或 --show-nonprinting:除了 LFD 和 TAB 之外,使用 ^ 和 M- 符号,显示其他所有非打印字符。
- -A 或 --show-all:等价于 -vET。
- -e:等价于"-vE"选项。
- -t:等价于"-vT"选项。
- --help:显示帮助信息并退出。
- --version:显示版本信息并退出。
实践操作
1. 执行 cat 命令的完整命令生成文件内容,并且不带参数查看内容
mkdir -p /test/cat #创建测试目录
cd /test/cat #切换到测试目录
1.1. 基本格式
cat >fielname <<字符串 #开始符。一般为EOF,注意,结尾不要有其他字符,包括空格
内容
字符串 #结束符。注意,结尾不要有其他字符,包括空格
1.2. 演示范例,这里注意设置第二空行是有空格的
cat >file1.txt <<aa
T33
T77
aa
cat file1.txt #不带参数查看内容
2. 执行 cat 命令,分别带 -n 及 -b 选项,对比区别
cat -b file1.txt #参数 -b 也打印行号,但不包括空行
cat -n file1.txt #参数-n 打印行号,包括空行
3. 执行 cat 命令,带 -s 参数
cat -sn file1.txt #连续空行只显示一行
4. 执行 cat 命令,带 -E 参数
cat -E file1.txt #结束标识符$
echo >file1.txt
cat file1.txt
cat -E file1.txt #结束标识符$,即使是空行也要显示$
5. 使用 cat 命令时,解决特殊字符消失问题
5.1. 模拟问题
cat >>file1.txt <<a
原始数据:/$test/$
a
cat file1.txt #我就想要 /$test/$ ,但是个别字符不见了,肿么办?
5.2. 解决方法
cat >>file1.txt <<EOF
解决方法1:/\$test/\$ #在每个特殊字符前加 \ 符号
EOF
cat >>file1.txt <<'EOF'
解决方法2:/$test/$ #在前面的 EOF 加单引号
EOF
cat file1.txt
6. 合并文件内容
cat > file1.txt #不输入内容,按 Ctrl + d 结束 为清空内容,演示写入了1,2
cat file1.txt #覆盖内容了
cat /dev/null >file1.txt #也可以清空文件
cat file1.txt
cat > file1.txt #再次写入1,2
cat > file2.txt #写入2,3
cat * #显示多个文件内容
cat * >file3.txt #将多个文件内容合并到新文件中
ls
cat file3.txt
cat file1.txt
#基本格式
cat >fielname <<字符串
内容
字符串
命令示例:1. 执行 cat 命令的完整命令生成文件内容,并且不带参数查看内容
mkdir -p /test/cat
cd /test/cat
cat >file1.txt <<aa
T33
T77
aa
cat file1.txt
输出结果:
[root@MineGi ~]# mkdir -p /test/cat
[root@MineGi ~]# cd /test/cat
[root@MineGi /test/cat]# cat >file1.txt <<aa
>
>
> T33
>
>
>
> T77
> aa
[root@MineGi /test/cat]# cat file1.txt
T33
T77
[root@MineGi /test/cat]#
命令示例:2. 执行 cat 命令,分别带 -n 及 -b 选项,对比区别
cat -b file1.txt
cat -n file1.txt
输出结果:
[root@MineGi /test/cat]# cat -b file1.txt
1
2 T33
3 T77
[root@MineGi /test/cat]# cat -n file1.txt
1
2
3 T33
4
5
6
7 T77
[root@MineGi /test/cat]#
命令示例:3. 执行 cat 命令,带 -s 参数
cat -sn file1.txt
输出结果:
[root@MineGi /test/cat]# cat -sn file1.txt
1
2
3 T33
4
5 T77
[root@MineGi /test/cat]#
命令示例:4. 执行 cat 命令,带 -E 参数
cat -E file1.txt
echo >file1.txt
cat file1.txt
cat -E file1.txt
输出结果:
[root@MineGi /test/cat]# cat -E file1.txt
$
$
T33$
$
$
$
T77$
[root@MineGi /test/cat]# echo >file1.txt
[root@MineGi /test/cat]# cat file1.txt
[root@MineGi /test/cat]# cat -E file1.txt
$
[root@MineGi /test/cat]#
命令示例:5. 使用 cat 命令时,解决特殊字符消失问题
cat >>file1.txt <<a
原始数据:/$test/$
a
cat >>file1.txt <<EOF
解决方法1:/\$test/\$
EOF
cat >>file1.txt <<'EOF'
解决方法2:/$test/$
EOF
cat file1.txt
输出结果:
[root@MineGi /test/cat]# cat >>file1.txt <<a
> 原始数据:/$test/$
> a
[root@MineGi /test/cat]# cat >>file1.txt <<EOF
> 解决方法1:/\$test/\$
> EOF
[root@MineGi /test/cat]# cat >>file1.txt <<'EOF'
> 解决方法2:/$test/$
> EOF
[root@MineGi /test/cat]# cat file1.txt
原始数据://$
解决方法1:/$test/$
解决方法2:/$test/$
[root@MineGi /test/cat]#
命令示例:6. 合并文件内容
cat > file1.txt
cat file1.txt
cat /dev/null >file1.txt
cat file1.txt
cat > file1.txt
cat > file2.txt
cat *
cat * >file3.txt
ls
cat file3.txt
cat file1.txt
输出结果:
[root@MineGi /test/cat]# cat > file1.txt
1
2
[root@MineGi /test/cat]# cat file1.txt
1
2
[root@MineGi /test/cat]# cat /dev/null >file1.txt
[root@MineGi /test/cat]# cat file1.txt
[root@MineGi /test/cat]# cat > file1.txt
1
2
[root@MineGi /test/cat]# cat > file2.txt
3
4
[root@MineGi /test/cat]# cat *
1
2
3
4
[root@MineGi /test/cat]# cat * >file3.txt
[root@MineGi /test/cat]# ls
file1.txt file2.txt file3.txt
[root@MineGi /test/cat]# cat file3.txt
1
2
3
4
[root@MineGi /test/cat]# cat file1.txt
1
2
[root@MineGi /test/cat]#
注意事项
- 当使用 cat 命令查看大文件时,要小心,因为整个文件内容都会被加载到内存中并显示在终端上,这可能会导致终端变得非常缓慢或崩溃。
- 对于大文件或需要更高级文本处理的情况,建议使用其他工具,如 less、more 或 awk、sed 等。
cat 命令虽然简单,但在日常的文件查看和操作中非常有用。熟悉其选项和用法可以大大提高在 Linux 系统中的工作效率。
总结
cat 命令是 Linux 系统中一个非常实用且常用的命令,用于查看和连接文件内容。通过熟悉其基本语法和常用选项,并结合重定向和管道操作,你可以执行各种复杂的文本处理任务。然而,在处理大文件时,要注意内存使用和终端性能的问题,可以考虑使用其他更适合的工具。总的来说,掌握 cat 命令将极大地提高你在 Linux 系统中处理文本文件的工作效率。