Какова наилучшая политика запуска программ с графическим интерфейсом из командной строки, чтобы заглушить сообщения, не являющиеся ошибками?

Какова наилучшая политика запуска программ с графическим интерфейсом из командной строки, чтобы заглушить сообщения, не являющиеся ошибками?

При запуске графических программ (например, Sublime Text) из терминала в Linux программа работает нормально, но выводит на консоль сообщения, которые не являются ни сбоями, ни полезными сообщениями журнала, а просто «мелочь», например:

(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

... которые создают проблемы при запуске программы в фоновом режиме и продолжении использования Терминала.

Как лучше всего это удалить?

Я думал заменить двоичный файл скриптом, который оборачивает запуск двоичного файла, но подавляет весь вывод ( > /dev/null 2>&1), но разве нет более чистого способа сделать это?

решение1

В bash это можно сделать >/dev/null 2>&1с помощью &>/dev/null.

Вы можете сделать что-то вроде:

#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; }  

Тогда вам нужно сделать следующее:

silence sublime_text

или

abandon sublime_text

В зависимости от того, хотите ли вы по-прежнему легко управлять Sublime Text из терминала.

(Магия $@ заключается в обработке более сложных аргументов)

Связанный контент