exec 3>&1 # Save current "value" of stdout.
ls -l 2>&1 >&3 3>&- | grep bad 3>&- # Close fd 3 for 'grep' (but not 'ls').
# ^^^^ ^^^^
exec 3>&- # Now close it for the remainder of the script.
Я получаю третью строку, где fd 3 закрывается.
Сомнения: 1-я строка перенаправляет fd 3 на стандартный вывод, глобально ... верно?
Вопросы: Что происходит во 2-й строке? Пожалуйста, предоставьте подробное объяснение, если это возможно.