输入输出重定向与管道
1. 什么是重定向与管道
2. 重定向命令符
答:
1. Linux 三种标准输入输出, STDIN, STDOUT, STDERR, 对应数字是0,1,2
对于任何linux命令的执行会有下面的过程:
一条命令的执行需要键盘等的标准输入,命令的执行和正确或错误,其中的每一个双向箭头就是一个通道,所以数据流可以流入到文件端(重定向或管道)
简单来讲,重定向就是把本来要显示在终端的命令结果,输送到别的地方,分成:
管道就是把两个命令连接起来使用,一个命令的输出作为另一个命令的输入
两者的区别在于:
2. 命令
重定向常见的命令符号有:
补充
补充:重定向(
>、>>、<)和管道(|)是 Shell 把「数据流」在不同命令 / 文件之间搬运的核心机制。
补充要点:
- 标准流:
stdin(标准输入,文件描述符 0)stdout(标准输出,文件描述符 1)stderr(标准错误,文件描述符 2)
- 重定向符号:
cmd > file:stdout 写入 file(覆盖)。cmd >> file:stdout 追加到 file。cmd < file:从 file 读入 stdin。cmd 2> file:stderr 写入 file。cmd > file 2>&1:stdout 和 stderr 都写到同一个文件。
- 管道:
cmd1 | cmd2:cmd1 的 stdout 作为 cmd2 的 stdin。cmd1 |& cmd2:把 cmd1 的 stderr 也并入 stdout 传给 cmd2(Bash 4+)。
补充:常见组合
cat file | grep error | wc -l统计文件中「error」出现的行数;nohup cmd > out.log 2>&1 &后台启动并保留日志。



