Вы можете поместить перенаправление в список команд:
{
command1
command2
} >/dev/null
Если в какой-то момент в скрипте вы не хотите выводить данные из последующих команд, вы можете перенаправить вывод оболочки с помощью встроенной команды exec
:
echo interesting
exec >/dev/null
echo boring
Обратите внимание, что это продолжается до конца сценария, а не только до конца функции. Это заботится о командах после интересной, но не раньше.
Существует способ отменить эффект exec /dev/null
, используя манипуляции с дескриптором файла. Я не обязательно рекомендую это, хотя, потому что это может быть сложно тренироваться на практике. Идея состоит в том, чтобы переместить все, что связано со стандартным выводом, в другой дескриптор, затем перенаправить стандартный вывод в другой файл и, наконец, переместить исходный стандартный вывод обратно в стандартный вывод.
{
exec 3>&1 # duplicate fd 3 to fd 1 (standard output)
exec >/dev/null # connect standard output to /dev/null
echo boring
exec 1>&3 # connect standard output back to what was saved in fd 3
echo interesting
exec >/dev/null # connect standard output to /dev/null again
echo more boring
} 3>/dev/null # The braced list must have its fd 3 connected somewhere,
# even though nothing will actually be written to it.