Как остановить перенаправление в bash

Я использую :

exec >script.log 2>&1 

в моем скрипте перенаправить весь вывод в файл. В конце сценария я хотел бы напечатать сообщение на экране. Как остановить перенаправление?

3 Solutions collect form web for “Как остановить перенаправление в bash”

Вы можете вызвать exec раз, чтобы восстановить исходные дескрипторы. Вам нужно будет их где-то спасти.

 exec 3>&1 4>&2 1>script.log 2>&1 … logged portion … exec 1>&3 2>&4 echo >&2 "Done" 

Внутри зарегистрированной части вы можете использовать исходные дескрипторы для одной команды, перенаправляя дополнительные дескрипторы.

 echo "30 seconds remaining" >&3 

Кроме того, вы можете поместить зарегистрированную часть вашего скрипта внутри составной команды и перенаправить эту составную команду. Это не работает, если вы хотите использовать исходные дескрипторы в ловушке где-то внутри этой перенаправленной части.

 { … logged portion … } >script.log 2>&1 echo >&2 "Done" 

Используйте adddinal fd 3 и 4 для stdout и stderr и просто перенаправляйте 1 и 2 к ним в конце вашего скрипта:

 exec 3>&1 4>&2 exec >script.log 2>&1 echo "Some code" exec >&3 2>&4 echo "Done" 

Сначала вы должны проверить, есть ли у вас tty.

 if tty -s; then echo "Hello, World" > $(tty) fi 
  • Не удалось создать указанные оконные стекла
  • Как создать файлы, используя строки в TXT-файле?
  • Как я могу обернуть расширение переменной в кавычки?
  • Как установить, какая оболочка использует Midnight Commander?
  • Как я могу «изолировать» сценарий оболочки?
  • Разница между «man ls» и «ls --help»?
  • Что это за переменная формы = $ (...)
  • Разница между скобками и фигурными скобками в терминале?
  • Как расширение имени файла оболочки расшифровывает элементы в списке (*)?
  • Как я могу увидеть размер нераспределенного размера раздела в командной строке после сокращения раздела с помощью resize2fs?
  • Результаты задания Cron отличаются от выполнения из собственной оболочки
  • Командный поток команды Shell Script перезаписывает старые строки
  • Linux и Unix - лучшая ОС в мире.