bash - programas - scripts linux ejercicios resueltos
Con Bash Scripting, ¿cómo puedo suprimir todos los resultados de un comando? (7)
Tengo un script bash que ejecuta un programa con parámetros. Ese programa genera algún estado (haciendo esto, haciendo eso ...). No hay opción para que este programa sea silencioso. ¿Cómo puedo evitar que el script muestre algo?
Estoy buscando algo así como ventanas "echo off".
Al igual que la publicación de andynormancx, use esto: (si está trabajando en un entorno Unix)
scriptname > /dev/null
o puede usar esto: (si está trabajando en un entorno Windows)
scriptname > nul
Algo como
script > /dev/null 2>&1
Esto evitará la salida estándar y la salida de error, redirigiéndolos a /dev/null
.
Eche un vistazo a este ejemplo del Proyecto de documentación de Linux :
3.6 Ejemplo: archivo stderr y stdout 2
Esto colocará cada salida de un programa en un archivo. Esto es adecuado a veces para las entradas cron, si desea que un comando pase en silencio absoluto.
rm -f $(find / -name core) &> /dev/null
Dicho esto, puedes usar esta redirección simple:
/path/to/command &>/dev/null
En su script, puede agregar lo siguiente a las líneas que sabe que van a dar un resultado:
some_code 2>>/dev/null
O también puedes probar
some_code >>/dev/null
Lo siguiente envía una salida estándar al dispositivo nulo (grupo de bits).
scriptname >/dev/null
y si también desea que se envíen mensajes de error allí, use uno de (el primero puede no funcionar en todos los shells):
scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null
y, si desea grabar los mensajes pero no verlos, reemplace /dev/null
con un archivo real, como:
scriptname &>scriptname.out
Para completar, bajo Windows cmd.exe (donde "nul" es el equivalente de "/ dev / null"), es:
scriptname >nul 2>nul
Tratar
: $(yourcommand)
:
es la abreviatura de "no hacer nada".
$()
es sólo su comando.
Una alternativa que puede encajar en algunas situaciones es asignar el resultado de un comando a una variable:
$ DUMMY=`grep root /etc/passwd`
$ echo $?
0
$ DUMMY=`grep r00t /etc/passwd`
$ echo $?
1
Dado que Bash y otros intérpretes de la línea de comandos POSIX no consideran las asignaciones de variables como un comando, se respeta el código de retorno del comando actual.