
Cuando, en Linux, se ejecutan programas gráficos (como Sublime Text, por ejemplo) desde la Terminal, el programa funciona bien pero registra en la consola mensajes que no son exactamente fallas, ni mensajes de registro útiles, solo "cosas" como:
(sublime:15269): Gtk-WARNING **: Unable to locate theme engine in module_path: "oxygen-gtk",
(sublime:15269): GLib-CRITICAL **: Source ID 958 was not found when attempting to remove it
... que son problemáticos cuando se ejecuta el programa en segundo plano y se continúa usando la Terminal.
¿Cuál es la mejor práctica para eliminar esto?
Pensé en reemplazar el binario con un script que envuelve el inicio binario pero suprime todos los resultados ( > /dev/null 2>&1
), pero ¿no existe una manera más limpia de hacerlo?
Respuesta1
En bash, puedes lograrlo >/dev/null 2>&1
con &>/dev/null
.
Podrías hacer algo como:
#Run a command in the background, ignoring its STDOUT and STDERR
silence() { local cmd="$1"; shift; "$cmd" "$@" &>/dev/null & }
#The same, but stop caring about it too (no job control, no SIGHUP when the parent terminal closes)
abandon() { silence "$@"; disown; }
Entonces harías:
silence sublime_text
o
abandon sublime_text
Dependiendo de si deseas o no controlar fácilmente el texto sublime desde la terminal.
(La magia de $@ es manejar argumentos más complejos)