背景
数字含义
- 0 标准输入
- 1 标准输出
- 2 标准错误输出
写入文件符号
>
表示覆盖文件>>
表示追加文件
# 覆盖文件 1.log
echo 123 > 1.log
# 追加内容到 1.log 末尾
echo 123 >> 1.log
默认的, >
和 >>
都是针对于标准输出的, 不包含标准错误
验证
如果我们想把标准输出和标准错误都输出到文件, 需要使用上面提交到数字
这里我们执行了一个不存在的命令 t
(echo 123 && t) > 1.log
可以看到错误信息并没有输出到 1.log, 而是输出到了屏幕
使用数字来重定向标准错误
(echo 123 && t) > 1.log 2>&1
可以看到文件内容包含了标准错误
同样的效果, 还可以声明为
(echo 123 && t) &> 1.log
总结
使用 >
和 >>
都是针对于标准输出的, 不包含标准错误. 如果也想把标准错误重定向到标准输出, 那么可以使用 > 1.log 2>&1
或者 &> 1.log
. 注意一个 >
表示覆盖, >>
表示追加. 即 >> 1.log 2>&1
或者 &>> 1.log