Usted puede poner un cambio de dirección en una lista de comandos:
{
command1
command2
} >/dev/null
Si en algún momento de la secuencia de comandos que no quieren ninguna salida de los comandos siguientes, puede redirigir la producción de la cáscara con la orden interna exec
:
echo interesting
exec >/dev/null
echo boring
Tenga en cuenta que esto dura hasta el final de la secuencia de comandos, no sólo hasta el final de una función. Esto cuida los comandos después del interesante pero no antes.
Hay una manera de revertir el efecto de exec /dev/null
, mediante el uso de manipulaciones de descriptores de archivo. Sin embargo, no lo recomiendo necesariamente, porque puede ser difícil de realizar en la práctica. La idea es reubicar todo lo que esté conectado a la salida estándar en un descriptor diferente, luego redireccionar la salida estándar a un archivo diferente, y finalmente reubicar la salida estándar original a la salida estándar.
{
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.
'r = $ (a); echo $ r' podría ser reemplazado con' a'. –