
Я создаю скрипт оболочки для автоматической настройки определенного компьютера с наилучшими параметрами. Я хотел бы скрыть весь вывод этого скрипта, за исключением вывода 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
или что-то в этом роде. Проверьте страницы руководства используемых вами команд.