Linux 操作系统:重定向和通配符扩展
重定向和通配符扩展
本章介绍了 Linux 操作系统中的重定向和通配符扩展:包括 cat
和 split
命令以及管道 |
的使用;有关通配符 ?, *, [abc]
等的使用,快速查找文件内容和处理命令输入输出。
1 重定向
1.1 cat 和 split
1.1.1 cat命令
• 功能:连接文件并打印到标准输出,支持文本处理功能。
• 参数:
参数 | 功能描述 |
---|---|
-n |
显示行号(包括空行) |
-b |
显示行号(跳过空行) |
-s |
压缩连续空行为一行 |
-A |
显示不可打印字符(如^I 代表Tab,$ 代表换行) |
• 示例:
1 | # 合并两个文件 |
1.1.2 split命令
• 功能:将大文件拆分为多个小文件。
• 参数:
参数 | 功能描述 |
---|---|
-l N |
按每N行拆分 |
-b SIZE |
按文件大小拆分(如900K ) |
-d |
使用数字后缀(如00 , 01 ) |
-a N |
指定后缀长度(默认2位) |
• 示例:
1 | # 拆分二进制文件为900KB片段 |
1.2 重定向基本原理和机制
1.2.1 文件描述符
• 标准输入/输出:
• 0
(STDIN):默认从键盘读取输入。
• 1
(STDOUT):默认输出到屏幕。
• 2
(STDERR):默认输出错误到屏幕。
1.2.2 重定向操作
• 输入重定向:将 input.txt
的内容读到命令 command
后作为命令的输入
1 | # 从文件读取输入 |
• 输出重定向:将命令的输出写入文件
1 | # 覆盖写入文件 |
• 错误重定向:
1 | # 将错误输出到文件 |
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文件 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 isKage`Blog!