bash 重定向
>
重定向输出,若无该文件则新建,若有则覆盖
ls -al > log
: > filename
清空文件
:为虚拟占位符
>>
重定向输出,若无该文件则新建,若有则添加进去
默认数字中,0表示标准输入(键盘),1表示标准输出(屏幕),2表示标准错误输出(屏幕)
& > filename
重定向标准输出和标准错误输出到filename
2>&1
重定向标准错误输出到标准输出
0<filename
从文件输入
n<&-
关闭输入fd n
echo "a" 1>&2 2>log
echo "a"
默认会在标准输出中输出 a
1>&2
将标准输出结果作为标准错误输出,此时的 1 相当于 1 和 2,而 2 不再是 2(标准错误输出)
此时的**标准错误输出由文件描述符 3 保存**。
2>log
将文件描述符的 2 重定向到文件 log 中,非标准错误输出
所以,使用以上的命令无法将 1 和 2 中的流导出到 log 文件中
echo "a" 2> log 1>&2
echo "a" 1>&2 > log
以上两种方法都可以将 标准输出和标准错误输出 都放到 log 里面