Приховування виводу команди оболонки зазвичай включає перенаправлення stderr та stdout. Чи є якась вбудована програма чи команда, яка за замовчуванням приховує вихід, але після помилки скидає весь накопичений вихід? Я хотів би запустити це як обгортку для віддалених ssh
команд. Тепер я маю їх використовувати переадресацію, але я не розумію, що змусило їх вийти з ладу, і вони просто занадто багатослівні.
EDIT: Врешті-решт я створив наступний шаблон на основі відповіді @Belmin, який я трохи змінив, щоб накопичити всі попередні команди зі скрипту, використовувати поточний ідентифікатор процесу, автоматично видалити журнал та додати помилку червоної помилки повідомлення, коли щось піде не так. У цьому шаблоні початкові silent
обгортки матимуть успіх, а потім відмовляються від третьої команди, оскільки каталог вже існує:
#!/bin/sh
set -e
SILENT_LOG=/tmp/silent_log_$$.txt
trap "/bin/rm -f $SILENT_LOG" EXIT
function report_and_exit {
cat "${SILENT_LOG}";
echo "\033[91mError running command.\033[39m"
exit 1;
}
function silent {
$* 2>>"${SILENT_LOG}" >> "${SILENT_LOG}" || report_and_exit;
}
silent mkdir -v pepe
silent mkdir -v pepe2
silent mkdir -v pepe
silent mkdir -v pepe2
2>&1
щось на кшталт:$* >>"${SILENT_LOG}" 2>&1" || report_and_exit