셸 백그라운드에서 프로그램을 사용하여 파일 열기

셸 백그라운드에서 프로그램을 사용하여 파일 열기

백그라운드 bash 쉘에서 프로그램(예: evince)을 시작하는 명령은 다음과 같습니다.

evince &

하지만 백그라운드에서 증거가 있는 일부 파일을 열고 싶다면 어떻게 해야 할까요? 둘 다 예상대로 evince myfile.pdf &작동하지 않습니다 evince & myfile.pdf. 첫 번째는 이와 같은 것을 출력 [2] 5356 하지만 다음 줄에서 쉘은 잠금을 반환하고 두 번째는 빈 증거 공간을 엽니다.

그렇다면 어떤 구문을 사용할 수 있나요?

답변1

때때로 프로그램을 시작할 때 일부 메시지가 인쇄됩니다. 백그라운드에서 시작하면 메시지를 표시할 수 있도록 다시 포그라운드로 가져올 때까지 프로그램이 잠길 수 있습니다. 해결책은 프로그램이 백그라운드에서 계속 실행될 수 있도록 stdout 및 stderr을 리디렉션하는 것입니다. 한 가지 방법은 다음과 같습니다.

evince myfile.pdf >~/evince.errs 2>&1 &

evince위의 코드는 표시하려는 메시지가 포함된 파일을 홈 디렉터리에 만듭니다 .

evince의 메시지가 중요하지 않다고 확신하는 경우 파일을 생성하지 않고 해당 메시지를 삭제할 수 있습니다.

evince myfile.pdf >/dev/null 2>&1 &

위 명령 중 하나를 실행한 후 쉘은 유사한 메시지를 생성한 [1] 1234다음 쉘 프롬프트가 나타나야 합니다. Graeme이 제안한 대로 쉘 프롬프트가 나타나지 않으면 Enter를 다시 누르십시오.

답변2

evince myfile.pdf

Ctrl+Z

bg

그러면 프로그램이 열리고 일시 중지된 다음 백그라운드로 전환됩니다.

또는:

( evince myfile.pdf ) &

및 백그라운드 evince에서 열립니다 . 조금 이상한 점은 다음과 같습니다.(subshell)(subshell)

evince myfile.pdf &

하지만 나에게 그랬던 것처럼 작동하지 않습니다.

다음을 수행할 수 있습니다.

echo $-

작업 제어 매개변수를 확인하세요. 나는 다음을 추천한다:

set -b

아직 사용하지 않으셨다면. 하다:

man set

더 많은 정보를 알고 싶습니다. 아니면 내 다른 답변을 참조하십시오여기.

관련 정보