Qual é a melhor política para executar programas GUI do CLI para silenciar mensagens que não são de erro?

1

Quando, no Linux, executando programas gráficos (como o Sublime Text por exemplo) do Terminal, o programa roda bem, mas registra as mensagens do console 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 usando o Terminal.

Qual é a melhor prática para remover isso?

Eu pensei em substituir o binário com um script que envolve a inicialização binária, mas suprime toda a saída ( > /dev/null 2>&1 ), mas não há uma maneira mais limpa de fazer isso?

tisek
fonte

Respostas:

1

Na festança, você pode realizar >/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 controlar o texto sublime do terminal facilmente.

(A magia $ @ é para lidar com argumentos mais complexos)

PSkocik
fonte