shell中&>> 和 2>>&1输出的文件内容有什么不同
时间: 2023-08-10 13:45:18 浏览: 46
`&>>` 和 `2>>&1` 的输出文件内容的不同在于它们重定向的内容不同。
`&>>` 将标准输出和标准错误输出都追加到文件中。如果一个命令同时产生标准输出和标准错误输出,那么这两者的内容都会被追加到文件中。例如,如果您运行以下命令:
```
ls /tmp /notexist &>> output.txt
```
那么 `output.txt` 文件中将包含 `ls` 命令的标准输出和标准错误输出。
`2>>&1` 将标准错误输出重定向到标准输出,然后将标准输出重定向到文件中。如果一个命令同时产生标准输出和标准错误输出,那么标准输出和标准错误输出都会被合并,并且合并后的内容会被重定向到文件中。例如,如果您运行以下命令:
```
ls /tmp /notexist 2>>&1 output.txt
```
那么 `output.txt` 文件中将包含 `ls` 命令的标准输出和标准错误输出,并且这两者的内容将被合并。
因此,`&>>` 和 `2>>&1` 的输出文件内容的不同在于它们重定向的内容不同。
相关问题
shell中使用&>>和2>>&1的区别
`&>>` 和 `2>>&1` 都是 Shell 中的重定向运算符,但它们的作用是不同的。
`&>>` 将命令的标准输出和标准错误输出都追加到文件中,类似于 `>>` 运算符。例如,以下命令将 `ls` 命令的标准输出和标准错误输出都追加到 `file.txt` 文件中:
```
ls &>> file.txt
```
`2>>&1` 则将命令的标准错误输出重定向到标准输出,然后再将标准输出重定向到文件。例如,以下命令将 `ls` 命令的标准输出和标准错误输出都重定向到 `file.txt` 文件中:
```
ls &> file.txt
```
这与 `ls > file.txt 2>&1` 的效果相同,它将标准输出和标准错误输出都重定向到文件中。
总之,`&>>` 将标准输出和标准错误输出都追加到文件中,而 `2>>&1` 则将标准错误输出重定向到标准输出,然后将标准输出重定向到文件中。
shell 中2>&1 和 $>区别
在Shell中,2>&1和$>都是用于重定向标准错误输出的操作符,但它们有一些区别。
1. 2>&1:这个操作符将标准错误输出(文件描述符2)重定向到标准输出(文件描述符1)。它的作用是将错误信息和正常输出信息合并到同一个地方,方便查看和处理。例如,如果你执行命令`command 2>&1`,则标准错误输出将会和标准输出一起显示在终端上。
2. $>:这个操作符用于将标准输出重定向到一个文件。它的作用是将命令的输出结果保存到指定的文件中,而不是显示在终端上。例如,如果你执行命令`command > output.txt`,则命令的输出结果将会被写入到名为output.txt的文件中。