2.2 通配符、重定向与管道

通配符、重定向与管道

📋 命令执行总结

通配符(Wildcard)

通配符 含义 示例
* 匹配任意多个字符(包括0个) *.txt 匹配所有 txt 文件
? 匹配恰好一个字符 file?.txt 匹配 file1.txt、fileA.txt
[abc] 匹配方括号中的任意一个字符 file[123].txt 匹配 file1.txt、file2.txt、file3.txt
[a-z] 匹配范围内的一个字符 file[a-c].txt 匹配 filea.txt、fileb.txt、filec.txt
{a,b,c} 匹配花括号中的任意一项(扩展) file{a,b,c}.txt 同上

重定向(Redirection)

符号 作用 示例
> 覆盖输出到文件 echo hello > file.txt
>> 追加输出到文件末尾 echo world >> file.txt
2> 覆盖重定向错误输出 ls notexist 2> error.log
2>> 追加重定向错误输出 ls notexist 2>> error.log
&> 同时重定向标准和错误 ls notexist &> all.log
< 从文件读入作为输入 wc -l < file.txt

管道(Pipe)

符号 作用 示例
` ` 把左边命令的输出作为右边命令的输入

标准输入输出

名称 数字代号 符号 默认去向
标准输出(stdout) 1 >>> 屏幕
标准错误(stderr) 2 2>2>> 屏幕
标准输入(stdin) 0 < 键盘

🧠 知识点总结

核心概念

通配符的作用

  • 用模式匹配批量操作文件,无需逐个写出文件名
  • 花括号展开({a,b,c})不是通配符,而是 Bash 的扩展特性,创建文件时非常方便

重定向的本质

  • 改变命令的输入/输出方向,不再默认到屏幕或键盘
  • > 覆盖输出会清空原文件内容,谨慎使用
  • 2> 只能重定向错误信息,普通输出仍到屏幕
  • &> 将标准输出和标准错误合并到同一文件

管道的威力

  • 将多个命令串联,每个命令专注做一件事
  • 组合小命令完成复杂任务,这是 Linux 哲学的核心体现
  • 管道不依赖中间文件,直接在内存中传递数据

常见组合模式

场景 命令组合
查找特定进程 ps aux | grep 关键词
分页查看长输出 ls -la | less
统计结果数量 ls | wc -l
筛选并保存 cat file | grep 关键词 > result.txt
查看最新几条记录 ls -lt | head -5

🔐 权限 / 用户 / 系统机制说明

重定向与权限的关系

  • 写入文件需要对该目录有写权限
  • 错误重定向(2>)同样受文件权限限制
  • 读取文件作为输入(<)需要读权限

特殊文件说明

/dev/null

  • 特殊设备文件,写入内容会被丢弃,读取立即返回 EOF
  • 常用场景:命令 2>/dev/null 屏蔽错误输出

管道与子进程

  • 管道两边的命令在子 shell 中执行
  • 管道内的变量修改不会影响父 shell

📌 补充说明

重要提醒

提醒项 说明
覆盖风险 > 会直接覆盖目标文件,无回收站,重要文件前先备份
通配符展开 *? 由 shell 展开,不是命令本身的功能
管道效率 管道在内存中传输数据,比写入文件再读取要快得多
错误处理 2>/dev/null 可屏蔽错误信息,适合脚本自动化

实用技巧

技巧 命令示例
批量创建文件 touch {1..100}.txt 一次创建 100 个文件
同时保存输出和错误 command 2>&1 | tee output.log
快速清空文件 > file.txt 不执行任何命令直接清空
多重管道 cat file | grep A | sort | uniq | wc -l
查找并删除 find . -name "*.log" | xargs rm

2.2 通配符、重定向与管道
https://blog.sh462li.top/2026/05/25/2.2 通配符、重定向与管道/
作者
SHAO
发布于
2026年5月25日
许可协议