命令简介

CAT 是 Linux 和 Unix 系统中一个非常基本和常用的命令,主要用于连接和显示文件内容。它可以将一个或多个文件的内容按原有的次序连接起来,并将结果输出到标准输出设备(通常是终端)或重定向到一个文件中。CAT 命令也可以用于创建新文件、查看文件内容以及合并多个文件的内容。

命令格式

CAT 命令的基本语法格式为: cat [options] [file(s)]

  • options: 用于指定 CAT 命令的选项,例如 -n 用于显示行号。
  • file(s): 需要连接和显示的一个或多个文件。如果不指定文件,CAT 将从标准输入读取数据。

参数说明

CAT 命令提供了多个可选参数,下表列出了常用的参数及其说明:

参数 说明 备注
-n 显示行号 -
-b 只对非空白行显示行号 -
-s suppresses repeated empty output lines -
-v 显示非打印字符 -
-T 显示制表符为 ^I -
-E 显示行尾标记 $ -

命令实例

基本用法

1.显示文件内容

1
cat file.txt

2.连接多个文件的内容并显示

1
cat file1.txt file2.txt  

显示行号和非打印字符

1.显示行号

1
cat -n file.txt 

2.只对非空白行显示行号

1
cat -b file.txt  

3.显示非打印字符

1
cat -v file.txt  

创建和合并文件

1.从标准输入创建新文件

1
cat > new_file.txt

2.合并多个文件到一个新文件

1
cat file1.txt file2.txt > merged_file.txt

与重定向和管道一起使用

1.搜索包含特定模式的行

1
cat file.txt | grep "pattern"

2.将文件内容追加到现有文件

1
cat file.txt >> existing_file.txt

显示特殊字符

1.将制表符显示为 ^I

1
cat -T file.txt

2.在每行结尾显示 $

1
cat -E file.txt

其他有用的用法

1.压缩重复的空白行

1
cat -s file.txt

2.清空文件内容

1
cat /dev/null > file.txt

3.忽略错误信息

1
cat file_does_not_exist 2>/dev/null

4.EOF 方式写文件

cat << 'EOF' > PATH/files.txt ... EOFcat << EOF >PATH/files.txt ... EOF 的区别:

cat << 'EOF' >(带单引号)

  • 单引号内的 ‘EOF’ 被视为一个字符串。
  • 在输入数据时,Shell 不会对输入数据进行任何变量替换或特殊字符转义。
  • 输入数据的每一行都会原样写入文件,不会进行任何解释。
  • 直到输入流遇到与 ‘EOF’ 完全匹配的字符串(包括引号)时,才会终止输入。

cat << EOF > (不带单引号)

  • EOF 被视为一个标记,而不是字符串。
  • 在输入数据时,Shell 会对输入数据进行变量替换和特殊字符转义。
  • 输入数据的每一行都会在写入文件之前被 Shell 解释一次。
  • 直到输入流遇到与标记 EOF 完全匹配的字符串时,才会终止输入。

4.1.单引号

1
2
3
4
cat << 'EOF' > file.txt
This is a line
$PATH will be treated as a literal string
EOF

在上面的示例中,$PATH 将被原样写入文件,而不会被替换为实际的环境变量值。

4.2.双引号

1
2
3
4
5
cat << EOF > file.txt
This is a line
$PATH will be replaced with the actual path
Special characters like \t will be interpreted
EOF

在上面的示例中,$PATH 将被替换为实际的环境变量值,同时 \t 将被解释为制表符。

总结:
总的来说,如果你需要将一些包含变量或特殊字符的数据写入文件,并希望 Shell 对这些数据进行解释和替换,那么应该使用 cat << EOF >。但如果你只需要原样写入数据,不希望进行任何替换或转义,那么就应该使用 cat << 'EOF' >

通过上述实例,你可以看到 CAT 命令在显示文件内容、创建和合并文件,以及与其他命令组合使用时的灵活应用。CAT 命令虽然简单,但在日常操作中非常实用。