2012-01-04 4 views
2

В сценарии оболочки у меня естьКак перенаправить вывод обратно на дисплей для одной команды

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 

Как я могу это сделать ??

ответ

4

Ключ клон stdout Переход на консоль к произвольному fd (я выбрал 3), прежде чем перенаправить его на ваш журнал. Всякий раз, когда вы хотите отправить вывод на консоль просто перенаправлять 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

Это прекрасно, чтобы выбрать любой ФО? Разве нет возможности, чтобы 3 был назначен fd файлу, открытому другим приложением, на котором он работает? –

2
# 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? –

+0

Извините, я хотел поднять. – SiegeX

+0

@SiegeX: спасибо :) +1 к вашему ответу тоже, я думаю, вы были на самом деле несколько секунд назад. –

Смежные вопросы