resueltos - Cómo silenciar el resultado en un script Bash?
scripts linux ejercicios resueltos (6)
Prueba con:
myprogram &>/dev/null
para no obtener salida
Tengo un programa que da salida a stdout y me gustaría silenciar ese resultado en un script Bash mientras canalizo a un archivo.
Por ejemplo, ejecutar el programa generará:
% myprogram
% WELCOME TO MY PROGRAM
% Done.
Quiero que la siguiente secuencia de comandos no envíe nada a la terminal:
#!/bin/bash
myprogram > sample.s
Si desea STDOUT y STDERR ambos [todo], entonces la forma más simple es:
#!/bin/bash
myprogram >& sample.s
luego ./script
como ./script
, y no obtendrás salida a tu terminal. :)
el "> &" significa STDERR y STDOUT. el &
también funciona de la misma manera con una tubería: ./script |& sed
que enviará todo a sed
Si también se envía a stderr, querrá silenciarlo. Puede hacerlo redirigiendo el descriptor de archivo 2:
# Send stdout to out.log, stderr to err.log
myprogram > out.log 2> err.log
# Send both stdout and stderr to out.log
myprogram &> out.log # New bash syntax
myprogram > out.log 2>&1 # Older sh syntax
# Log output, hide errors.
myprogram > out.log 2> /dev/null
Si todavía está luchando por encontrar una respuesta, especialmente si produjo un archivo para la salida, y prefiere una alternativa clara: echo "hi" | grep "use this hack to hide the oputut :) "
echo "hi" | grep "use this hack to hide the oputut :) "
Todos los resultados:
scriptname &>/dev/null
Portátil:
scriptname >/dev/null 2>&1
Portátil:
scriptname >/dev/null 2>/dev/null
Para más nuevo bash (no portátil):
scriptname &>-
2>&1
con esto redirigirá el stderr (que es el descriptor 2) al descriptor de archivo 1 que es el stdout
myprogram > sample.s
Ahora, al realizar esto, está redirigiendo la salida estándar al archivo sample.s
myprogram > sample.s 2>&1
La combinación de los dos comandos dará como resultado la redirección de stderr y stdout a sample.s
myprogram 2>&1 >/dev/null
Si quieres silenciar por completo tu aplicación