Скрытие вывода команды скрипта

Скрытие вывода команды скрипта

Я создаю скрипт оболочки для автоматической настройки определенного компьютера с наилучшими параметрами. Я хотел бы скрыть весь вывод этого скрипта, за исключением вывода echo. Возможно ли это?

решение1

Начните свой сценарий так:

exec 3>&1 1>/dev/null 2>&1

Это сохранит ваш исходный файловый дескриптор для stdout в &3, а затем перенаправит stdout и stderr в /dev/null. Всякий раз, когда вы хотите что-то распечатать, перенаправьте его вывод в &3, например:

echo "This message won't be output"
echo "But this one will" >&3

А если вы хотите скрыть эту деталь, вы можете просто определить функцию, которая будет возвращать fd 3:

say() {
    echo >&3 "$@"
}

say "This goes to the log"

решение2

Вы можете перенаправить stdout, /dev/nullдобавив

1>/dev/null

в конце каждой строки вашего скрипта, который будет выводить данные.

Вы можете перенаправить ошибки таким же образом, добавив

2>/dev/null

Большинство команд также имеют возможность отключить нормальный вывод на консоль, например, -qили что-то в этом роде. Проверьте страницы руководства используемых вами команд.

Связанный контент