애플리케이션에서 생성된 메시지가 내 터미널 창으로 전송되는 것을 방지하려면 어떻게 해야 합니까? [복사]

애플리케이션에서 생성된 메시지가 내 터미널 창으로 전송되는 것을 방지하려면 어떻게 해야 합니까? [복사]

gnome 또는 kde와 같은 윈도우 시스템 관련 터미널에서 응용 프로그램을 시작하면 일반적으로 이러한 응용 프로그램은 내 터미널에 모든 종류의 정크 메시지를 보냅니다. 이 앱을 닫으려면 어떻게 해야 하나요?

예를 들어, 다음을 입력하면:

 okular somepdf.pdf & 

PDF 파일을 표시하는 창이 나타나면 터미널 옆에서 PDF를 읽고 완료되면 닫을 수 있습니다.

전형적인 예는 다음과 같습니다.

:~$ cd Documents
:~/Documents$ okular equi.dvi &
[1] 5823

닫으면 다음 쓰레기가 터미널로 전송됩니다.

:~/Documents$ okular(5823)/kdeui (kdelibs) KXMLGUIClient::~KXMLGUIClient: 0x2322528 deleted without having been removed from the factory first. This will leak standalone popupmenus and could lead to crashes. 
d

d: command not found
[1]+  Done                    okular equi.dvi
[1]+  Done                    okular equi.dvi
:~/Documents$ 

내가 보고 싶은 유일한 것은:

:~$ cd Documents
:~/Documents$ okular equi.dvi &
:~/Documents$

어쩌면 메시지가 버그일 수도 있습니다. 저는 상관하지도 않고 그것에 대해 알고 싶지도 않습니다.

이러한 메시지를 표시하지 않을 수 있나요?

어떤 사람들은 이 질문을 "출력을 억제하는 방법" 질문과 중복된 것으로 표시했지만 이는 제가 원하는 것의 일부일 뿐입니다.

나는 원해요자동으로특정 응용 프로그램의 모든 출력을 억제합니다. 예를 들어 okular는 그래픽 응용 프로그램이므로 내 터미널에서 말하는 내용은 전혀 신경 쓰지 않습니다.

위에서 말했듯이 나는 행동이 다음과 같기를 원합니다.

:~$ cd Documents
:~/Documents$ okular equi.dvi &
:~/Documents$

그리고아니요그것은 마치

:~$ cd Documents
:~/Documents$ okular equi.dvi > whatever &
:~/Documents$

답변1

STDOUT을 억제하려면 다음을 수행하십시오.

yourcommand  1>/dev/null 

STDERR 억제

yourcommand  2>/dev/null

Bash 4부터는 다음 두 가지를 모두 억제할 수 있습니다.

yourcommand &>/dev/null

kdedebugdialog도구를 사용하여 KDE의 디버깅 정보를 비활성화하고 선택한 모듈(또는 모든 디버그 출력)에 대한 출력을 비활성화 할 수도 있습니다 .

답변2

프로그램의 STDOUT 및 STDERR을 가상 장치로 보낼 수 있습니다 /dev/null.

$ okular equi.dvi &> /dev/null &

작업 제어 메시지를 표시하지 않으려면 bash에서 watch 모드를 비활성화하면 됩니다(어쩌면 귀하의 모드에서도 가능 .bashrc).

$ set +m

하지만 나는 이것을 권장하지 않습니다. 다시 활성화하려면 를 사용하세요 set -m.

답변3

모든 텍스트를 숨기려면 다음 명령을 사용하십시오.

$> yourcommand >/dev/null &

stderr도 리디렉션하려면 다음을 수행할 수 있습니다.

$> yourcommand >/dev/null 2>&1 &

답변4

이것을 사용하십시오 :

okular equi.dvi > /dev/null 2>&1 & 

그러면 모든 출력(오류 메시지 및 일반 출력)이 /dev/null.

관련 정보