Linux终端重定向标准输出时,是否必须使用1>语法?
Linux标准输出重定向:
1> 和 > 的差异 简单说:> 就是 1> 的简写,两者功能完全等价,没有任何实际执行效果上的区别。
原因很直接:
- Linux进程默认会打开三个标准文件描述符:
- 0 = 标准输入(stdin)
- 1 = 标准输出(stdout)
- 2 = 标准错误(stderr)
- 在重定向语法里,
n>表示把文件描述符n的输出导向指定文件。当你省略前面的数字时,系统默认会使用文件描述符1——也就是标准输出。
举个实际例子:
ls > output.txt和ls 1> output.txt做的是同一件事:把ls命令的正常输出(非错误信息)写入到output.txt里,若文件已存在则覆盖原有内容。- 同理,追加输出的
>>和1>>也是完全等价的。
反过来想,要是你想重定向标准错误输出,就必须明确写2>,不能省略数字2——这也能侧面印证:只有标准输出的重定向允许省略默认的文件描述符1。
你提供的截图里也能看到,两种写法执行后,用cat查看目标文件得到的结果完全一致,这也直接验证了两者的等价性。
内容的提问来源于stack exchange,提问作者Pranav S V
相关产品推荐
相关产品推荐

