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