Ocultar el resultado de un comando de shell generalmente implica redirigir stderr y stdout. ¿Hay alguna instalación o comando incorporado que, de forma predeterminada, oculta la salida pero, por error, voltea toda la salida acumulada? Me gustaría ejecutar esto como un contenedor para ssh
comandos remotos . Ahora los tengo usando la redirección, pero no tengo ni idea de qué los hizo fallar, y son demasiado detallados.
EDITAR: Al final, creé la siguiente plantilla basada en la respuesta de @Belmin que modifiqué un poco para acumular todos los comandos anteriores del script, usar el identificador de proceso actual, eliminar automáticamente el registro y agregar un error rojo de falla mensaje cuando algo sale mal. En esta plantilla, los silent
contenedores iniciales tendrán éxito, luego fallarán el tercer comando porque el directorio ya existe:
#!/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
algo como:$* >>"${SILENT_LOG}" 2>&1" || report_and_exit