精读笔记 · 第05章 重定向与管道
大约 2 分钟
精读笔记 · 第05章 重定向与管道
精读整理自 RHCE9 随堂讲义(原文字版 7 页)|同名视频约 6 节 关联知识文件:
分章笔记/01-Linux/02-01-Linux基础、03-常用命令速查表
一、为什么要重定向
- 引出案例:
date输出的结果下次开机就没了 → 需要保存:date > date.txt(输出重定向到文件)。
二、标准输入输出与文件描述符(FD)
- FD(file descriptors,文件描述符/句柄):进程用它管理打开的文件;
/proc/PID/fd可观察。 - 约定:
0= 标准输入(键盘,只读)1= 标准输出(屏幕/终端)2= 标准错误输出(屏幕/终端)3+= 打开的常规文件(可读可写)
- 验证实验:
vim 1.txt→ 另开终端ps aux | grep vim找到 PID →ll /proc/PID/fd,可看到0/1/2 -> /dev/pts/2、3 -> /root/.1.txt.swp。
三、重定向符号速查
| 符号 | 含义 | 示例 |
|---|---|---|
> | 覆盖输出重定向(stdout) | date > date.txt |
>> | 追加输出 | echo hi >> log.txt |
2> | 错误输出重定向 | cmd 2> err.txt |
2>&1 / &> | 正确+错误合并输出 | cmd &> all.log |
< | 输入重定向 | wc -l < file |
- 注意:
>会清空原文件再写;>>追加保留。
四、管道 |
- 作用:把前一个命令的标准输出作为后一个命令的标准输入,层层加工。
- 经典组合:
ps aux | grep vim、cat /etc/passwd | grep bash、ls -l | head、history | grep useradd、grep -v 关键词 | wc -l。 - 与
tee:既要屏幕又要文件用命令 | tee 文件。
五、易错点
>与>>别混用(覆盖 vs 追加);2. 管道只传 stdout,错误信息要2>&1才进管道;3.grep过滤本身别把自己 grep 进去(ps aux | grep -v grep)。
六、实操清单
date > / 案例重做 → FD 实验(vim+ps+/proc/PID/fd)→ echo x >> log 两次验证追加 → ls /nonexist 2> err.txt → 管道组合 5 连招。
七、本章自测
- FD 0/1/2 分别代表什么?2.
>与>>区别?3. 如何同时保存正确与错误输出?
