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
。
答
>
单独重定向标准输出。
>&
或&>
或1>&
重定向既标准输出和标准误差。
您的程序上没有的情况下,1
答
>
之前的数字代表描述符。
Standard Input - 0
Standard Output - 1
Standard Error - 2
&
将指示标准输出和标准错误。
http://linuxdevcenter.com/pub/a/linux/lpt/13_01.html#doc2ac15b1c13
非常感谢您的好评。读完之后,我想出了命令'haizea -c simulated.conf 2>&1 | grep'CLOCK'',我真的很想。 – 2010-10-28 03:33:44
我不知道为什么,但我总是用并喜欢> xyz 2>&1 – shantanuo 2010-11-11 09:33:01