it-swarm-es.tech

¿Cómo suprimir toda la salida de un comando usando Bash?

Tengo un script de 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".

262
6bytes

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
462
andynormancx

Algo como

script > /dev/null 2>&1

Esto evitará la salida estándar y error, redirigiéndolos a /dev/null.

39
Diego Sevilla

Tratar

: $(yourcommand)

: es la abreviatura de "no hacer nada".

$() es solo su comando.

11
V0idSt4r

Una alternativa que puede encajar en algunas situaciones es asignar el resultado de un comando a una variable:

$ DUMMY=$( grep root /etc/passwd 2>&1 )
$ echo $?
0
$ DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ 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.

Nota: assignement con la palabra clave typeset o declare se considera como un comando, por lo que el código de retorno evaluado en el caso es la asignación en sí y no el comando ejecutado en el sub-Shell:

$ declare DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
0
7
semente

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

Eche un vistazo a este ejemplo deEl 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 de cron, si desea que un comando pase en absoluto silencio.

     rm -f $(find / -name core) &> /dev/null 

Dicho esto, puedes usar esta redirección simple:

/path/to/command &>/dev/null
4
ivanleoncz

En su script, puede agregar lo siguiente a las líneas que sabe que van a dar una salida:

some_code 2>>/dev/null

O también puedes probar

some_code >>/dev/null
1
Rohan Dsouza