shell-bash之重定向和管道
重定向
功能:能修改输入输出位置
文件描述符
定义:内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。
分类
文件描述符 | 通道名 | 描述 | 默认连接 | 用途 |
---|---|---|---|---|
0 | stdin | 标准输入 | 终端 | read only |
1 | stdout | 标准输出 | 终端 | write only |
2 | stderr | 标准错误输出 | 终端 | write only |
3以上 | filename | 其他文件 | none | read and/or write |
输出重定向
-
标准输出(STDOUT)重定向([1]<)
- 覆盖式:
CMD > FILE
- 追加式:
CMD >> FILE
- 覆盖式:
-
标准错误输出(STDERR)重定向(2>)
- 覆盖式:
CMD 2> FILE
- 追加式:
CMD 2>> FILE
- 覆盖式:
-
所有输出重定向
-
方式1:
CMD &< FILE
-
方式2:
CMD > FILE 2>&1
||CMD 2> FILE 1>&2
2>&1: 将标准错误输出重定向到标准输出
1>&2: 将标准输出重定向到标准错误输出
-
输入重定向<(举例说明)
-
使用cat从test1读取输入,再将输出重定向到test2
-
可使用<<END来指定输入终止符,
管道
功能:通过管道|,可以将一个命令的标准输出成为另一个命令的标准输入
例子:查找当下与nginx相关的进程