Linux 操作系统:重定向和通配符扩展
重定向和通配符扩展
本章介绍了 Linux 操作系统中的重定向和通配符扩展:包括 cat
和 split
命令以及管道 |
的使用;有关通配符 ?, *, [abc]
等的使用,快速查找文件内容和处理命令输入输出。
1 重定向
1.1 cat 和 split
1.1.1 cat命令
• 功能:连接文件并打印到标准输出,支持文本处理功能。
• 参数:
参数 | 功能描述 |
---|---|
-n |
显示行号(包括空行) |
-b |
显示行号(跳过空行) |
-s |
压缩连续空行为一行 |
-A |
显示不可打印字符(如^I 代表Tab,$ 代表换行) |
• 示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 合并两个文件
cat file1 file2 > merged_file
# 显示行号(含空行)
cat -n tmp.txt
# 结果:
# 1 id name desc
# 2
# 3 1 John 99
# 显示不可打印字符
cat -A tmp.txt
# 结果:
# id^Iname^Idesc$
# $
# 1^IJohn^I99$
1.1.2 split命令
• 功能:将大文件拆分为多个小文件。
• 参数:
参数 | 功能描述 |
---|---|
-l N |
按每N行拆分 |
-b SIZE |
按文件大小拆分(如900K ) |
-d |
使用数字后缀(如00 , 01 ) |
-a N |
指定后缀长度(默认2位) |
• 示例:
1
2
3
4
5# 拆分二进制文件为900KB片段
split -d -b 900k /bin/bash bash_part.
# 合并拆分文件
cat bash_part.00 bash_part.01 > restored_bash
1.2 重定向基本原理和机制
1.2.1 文件描述符
• 标准输入/输出:
• 0
(STDIN):默认从键盘读取输入。
• 1
(STDOUT):默认输出到屏幕。
• 2
(STDERR):默认输出错误到屏幕。
1.2.2 重定向操作
• 输入重定向:将 input.txt
的内容读到命令 command
后作为命令的输入
1
2# 从文件读取输入
command < input.txt
• 输出重定向:将命令的输出写入文件
1
2
3
4# 覆盖写入文件
command > output.txt
# 追加写入文件
command >> output.txt
• 错误重定向:
1
2
3
4# 将错误输出到文件
command 2> error.log
# 合并标准输出和错误到同一文件
command &> combined.log
1.3 管道
1.3.1 管道机制
• 语法:cmd1 | cmd2 | cmd3
• 功能:将前一个命令的 STDOUT 输出作为下一个命令的 STDIN 输入。
• 示例:
1 | # 统计包含"error"的行数 |
1.3.2 tee 命令
• 功能:将数据同时输出到文件和屏幕。
• 示例:
1 | # 将输出保存到文件并显示在屏幕 |
2 通配符扩展
2.1 通配符模式
2.1.1 基础通配符
• ?
:匹配单个字符。
1
ls file?.txt # 匹配 file1.txt, fileA.txt
• *
:匹配任意数量字符。
1
ls *.log # 匹配所有.log文件
2.1.2 字符集合
• [abc]
:匹配a、b、c中的任意一个字符。
1
ls file[123].txt # 匹配 file1.txt, file2.txt, file3.txt
• [a-z]
:匹配范围(依赖本地化设置)。
1
ls [a-c]*.txt # 匹配a、b、c开头的文件
2.2 通配符扩展
2.2.1 否定匹配
• [!abc]
:匹配不在集合中的字符。
1
ls file[!1-3].txt # 排除file1-3.txt
2.2.2 特殊字符处理
• 转义字符:使用反斜杠\
或引号避免扩展。
1
ls file\?.txt # 匹配file?.txt字面量
2.3 扩展通配符(需启用extglob
)
2.3.1 模式扩展
• 启用和关闭扩展:
1 | shopt -s extglob # 启用 |
• 语法:
• ?(pattern)
:匹配 0 或 1 次。
• *(pattern)
:匹配 0 或多次。
• +(pattern)
:匹配 1 或多次。
• @(pat1|pat2)
:匹配 pat1 或 pat2 。
2.3.2 示例
1 | # 匹配所有.jpg或.png文件 |