
При запуске графических программ (например, 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 из терминала.
(Магия $@ заключается в обработке более сложных аргументов)