&>和2>&1de qubie
时间: 2024-12-30 21:26:21 浏览: 45
### 解释 Shell 中 `&>` 和 `2>&1` 的区别
在 Linux shell 脚本中,文件描述符用于处理输入和输出流。具体来说:
- 文件描述符 0 表示标准输入(stdin)
- 文件描述符 1 表示标准输出(stdout)
- 文件描述符 2 表示标准错误输出(stderr)
#### 使用 `2>&1`
命令中的 `2>&1` 将标准错误输出重定向到当前的标准输出位置。这意味着任何原本会发送到标准错误的内容现在会被送到标准输出所指向的地方。
例如,在命令 `nohup java -jar app.jar > log 2>&1 &` 中,先将标准输出重定向至名为 `log` 的文件,随后通过 `2>&1` 把标准错误也导向同一路径[^1]。
```bash
command > output.txt 2>&1
```
这段代码首先创建或清空 `output.txt` 并把所有来自 `command` 的标准输出写入该文件;接着它使得标准错误跟随已有的标准输出流向相同的文件。
#### 使用 `&>`
另一方面,`&>` 提供了一种更简洁的方式来实现相同的效果——即同时重定向标准输出和标准错误到同一个目标。语法更加直观易读。
对于同样的例子而言,可以写作如下形式来达到一致的结果:
```bash
command &> output.txt
```
这行指令一次性完成了两个动作:既指定了标准输出又涵盖了标准错误都将被记录于指定的日志文件内。
尽管两者最终效果相似,但在某些老旧版本的 Unix/Linux 发行版里可能不支持较新的 `&>` 符号,因此传统做法推荐使用 `2>&1` 方式以确保兼容性更好一些[^3]。
阅读全文
相关推荐




















