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

问题描述:

当我运行命令haizea -c simulated.conf > result.txt时,程序(haizea)仍将其输出打印到屏幕上。但是,当我尝试haizea -c simulated.conf 1>& result.txt时,输出现在在文件result.txt上。我对这种情况很困惑。然后>1>&有什么区别?Linux命令shell中“命令> log.txt”和“命令1>&log.txt”之间的区别?

被重定向标准错误,你所看到的终端上打印什么是你的程序的标准错误。这两个都默认定向到同一个终端设备(假设没有重定向生效)。

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

我从来没有使用过它,但我认为,通过扩展,N>&xyz会将文件句柄N和标准错误重定向到您的文件。所以1>&xyz相当于>&xyz,这也相当于>xyz 2>&1

+0

非常感谢您的好评。读完之后,我想出了命令'haizea -c simulated.conf 2>&1 | grep'CLOCK'',我真的很想。 – 2010-10-28 03:33:44

+0

我不知道为什么,但我总是用并喜欢> xyz 2>&1 – shantanuo 2010-11-11 09:33:01

>单独重定向标准输出。

>&&>1>&重定向标准输出和标准误差。

您的程序上没有的情况下,1

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

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

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

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