
Quando, no Linux, executamos programas gráficos (como Sublime Text por exemplo) a partir do Terminal, o programa funciona bem, mas registra no console mensagens que não são exatamente falhas, nem mensagens de log úteis, apenas "coisas" 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 são problemáticos ao executar o programa em segundo plano e continuar a usar o Terminal.
Qual é a melhor prática para remover isso?
Pensei em substituir o binário por um script que envolve a inicialização do binário, mas suprime todas as saídas ( > /dev/null 2>&1
), mas não existe uma maneira mais limpa de fazer isso?
Responder1
No bash, você pode fazer isso >/dev/null 2>&1
com &>/dev/null
.
Você poderia fazer 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; }
Então você faria:
silence sublime_text
ou
abandon sublime_text
Dependendo se você ainda deseja ou não controlar facilmente o texto sublime do terminal.
(A mágica do $@ é lidar com argumentos mais complexos)