1

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

(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 ответ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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .