Pregunta

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 como ventanas " echo off " ;.

¿Fue útil?

Solución

Lo siguiente envía una salida estándar al dispositivo nulo (depósito 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, en Windows cmd.exe (donde " nul " es el equivalente de " / dev / null "), es:

scriptname >nul 2>nul

Otros consejos

Algo como

script > /dev/null 2>&1

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

Probar

: $(yourcommand)

: es la abreviatura de " no hacer nada " ;.

$ () es solo tu comando.

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: la asignación con la palabra clave typeset o declare se considera un comando, por lo que el código de retorno evaluado en caso de que sea la asignación en sí y no el comando ejecutado en el sub-shell:

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

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 en La documentación de Linux Proyecto :

  

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 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 una salida:

some_code 2>>/dev/null

O si no, también puedes probar

some_code >>/dev/null
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top