Linux命令shell中“command> log.txt”和“command 1>& log.txt”之间的区别?

时间:2010-10-28 03:15:39

标签: linux shell command-line

当我运行命令haizea -c simulated.conf > result.txt时,程序(haizea)仍会将其输出打印到屏幕上。但是当我尝试haizea -c simulated.conf 1>& result.txt时,输出现在位于文件result.txt上。我对这种情况很困惑。那么>1>&之间有什么区别呢?

3 个答案:

答案 0 :(得分:4)

您在终端上看到的是您的流程的标准错误。默认情况下,这两个都指向同一终端设备(假设没有重定向生效)。

重定向>&xyz将标准输出错误重定向到文件xyz

我从未使用它,但我认为,N>&xyz会将文件句柄N和标准错误重定向到您的文件。因此1>&xyz相当于>&xyz,相当于>xyz 2>&1

答案 1 :(得分:2)

>之前的数字代表描述符。

Standard Input - 0
Standard Output - 1
Standard Error - 2

&将指示标准输出和标准错误。

http://linuxdevcenter.com/pub/a/linux/lpt/13_01.html#doc2ac15b1c13

答案 2 :(得分:1)

>仅重定向标准输出。

>&&>1>&重定向两者标准输出和标准错误。

您的程序正在打印标准错误,而在案例1中没有重定向。