如何输出重定向返回到显示单个命令

问题描述:

在外壳脚本我有如何输出重定向返回到显示单个命令

LOG=/my.log 
exec 1>>$LOG 
exec 2>&1 

被重定向在外壳脚本的输出。现在问题是在下面

LOG=/etc/security/aixpert/log/aixpert.log 
exec 1>>$LOG 
exec 2>&1 

#some codes 

print "I want this on cmd output not in log" 

#I want rest of the output redirected to log as usual 

我该怎么做?

关键是要克隆stdout在将控制台重定向到日志之前将控制台复制到任意fd(我选择了3)。每当你想输出发送到你刚才重定向FD 1控制台回的fd 3 >&3对于一个命令

LOG=/etc/security/aixpert/log/aixpert.log 

exec 3>&1 >>"$LOG" 2>&1 

#some codes 

echo "I want this on cmd output not in log" >&3 

#I want rest of the output redirected to log as usual 
+0

它是精细挑选任何FD?是否有可能将3分配给由正在操作的另一个应用程序打开的文件? – 2012-01-04 11:32:46

# save stdout as fd 3 
exec 3>&1 
exec 1>>$LOG 
exec 2>&1 

echo foo >&3 # output to old stdout 
echo bar  # output to logfile 
+0

为什么downvote? – 2012-01-04 11:07:58

+0

对不起,我的意思是upvote。 – SiegeX 2012-01-04 11:08:29

+0

@SiegeX:谢谢:) +1你的回答也是,我想你其实早几秒钟。 – 2012-01-04 11:10:40