오류가 아닌 메시지를 침묵시키기 위해 CLI에서 GUI 프로그램을 실행하는 가장 좋은 정책은 무엇입니까?

오류가 아닌 메시지를 침묵시키기 위해 CLI에서 GUI 프로그램을 실행하는 가장 좋은 정책은 무엇입니까?

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

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

터미널에서 숭고한 텍스트를 쉽게 제어하고 싶은지 여부에 따라 다릅니다.

($@ 마법은 더 복잡한 인수를 처리하는 것입니다)

관련 정보