IO中的文件描述符
0,stdin, 标准输入, 指向键盘
1,stdout, 标准输出, 指向终端屏幕
2,stderr, 标准错误输出, 指向终端屏幕
/dev/null无底洞,有些不想要的输出信息可以送到这里。
&, 在重定向中引用文件描述符.
例子.
- 2>&1, 把 stderr(文件描述符 2)重定向到 stdout(文件描述符1),这样错误信息和正常输出合并在一起,agent 能完整看到所有输出.
重定向操作符
>输出重定向, 覆盖模式
>>输出重定向,追加模式
<输入重定向
控制流操作符
- |左边命令的输出作为右边命令的输入。也叫 管道操作符.
- &&AND, 前者成功(返回 exit code 0)才执行后者
- ||OR, 前者失败才执行后者
- ;顺序执行, 无论前者成败都执行后者
例子
command >> ab.txt , 标准输出追加到文件ab.txt
command >&2 , 标准输出重定向输出到标准错误
command &> a 把所有输出重定向到文件 a
command > a 2>&1 等价于上个命令
shell中可能经常能看到:command>/dev/null 2>&1
它表示:[标准输出]送到无底洞,[标准出错] 重定向到 [标准输出] 。所以效果就是所有输出都被丢弃。