我想要执行以下命令,该命令与 Rational ClearCase 相关。此命令的输出应重定向到文件
testout
。
命令
rgy_check -vobs > testout
输出
rgy_check.exe: Error: An unregistered region \<region> was found in
VOB tag entry.
rgy_check.exe: Error: An unregistered region \<region> was found in
VOB tag entry.
...
文件testout
已创建,但不知何故文件是空的。
Grep 也不起作用,它仍然给出原始输出
rgy_check -vobs | grep "06a89"
答案1
这些是错误消息。标准是将正常输出写入 STDOUT 流(可以使用 重定向)>
,将错误消息写入 STDERR 流(使用 重定向)2>
。
如果不重定向,STDOUT 和 STDERR 都会出现在终端上,您无法分辨哪个是哪个。
因此,如果您希望错误消息最终testout
重定向到
rgy_check -vobs 2> testout
但是,从你的问题来看,我认为这testout
需要获得正常输出。你可以这样做:
rgy_check -vobs > testout 2> testerr
如果您需要grep
STDERR 流,可以使用以下小技巧:
rgy_check -vobs 2>&1 > testout | grep something
这将首先将 STDERR 重定向到与 STDOUT 相同的文件描述符,然后重定向 STDOUT(但不是将 STDERR 输出复制到文件testout
,然后将 STDERR 输出通过管道传输到grep
命令。