터미널에서 백그라운드 명령을 실행할 때 PID 및 종료 상태를 숨기는 방법

터미널에서 백그라운드 명령을 실행할 때 PID 및 종료 상태를 숨기는 방법

100줄이 넘는 텍스트 파일이 있는데, 각 줄은주문하다:

echo foo
...
echo bar

나는 ~을 찾고 있다지정된 줄 번호와 관련된 해당 파일에서 명령을 실행하는 터미널에서 명령을 호출할 수 있습니다. 일반적으로 터미널에서 실행되는 명령과 관련된 시스템 관련 내용을 터미널에 표시하는 것을 원하지 않습니다.

예를 들어, 이와 같은 것을 사용하면 xdotool type "$(sed -n 1p file)" &(더 우아한 명령이 가능하다는 점에 유의하세요)

다음 터미널 출력이 나타납니다.

[1] 9531
user@host:~$ echo foo

이 줄을 억제하고 싶습니다 [1] 9531.하지만 기억해, 난 그래아니요억제하고 싶다에코 바좋아, 여기에서 다른 명령이 아닌 필요한 명령을 실행하고 싶은지 확인할 기회가 있기 때문입니다. 또한 명령 프롬프트 왼쪽에 어떤 텍스트도 표시되는 것을 원하지 않습니다.

그런 다음 <을 클릭했습니다.입력하다> 내 키보드 키를 사용하여 다음을 얻습니다.

foo
[1]+  Done                    xdotool type "$(sed -n 1p file)" &
user@host:~$

이 줄을 억제하고 싶습니다 [1]+ Done....

이 두 라인의 터미널 출력을 어떻게 억제할 수 있습니까? 내가 찾을 수 있는 모든 리디렉션 방식을 시도했지만 재미가 없었습니다.

답변1

&단순화하기 위해 백그라운드에서 명령(기호)을 실행할 때 표시되는 일반 출력이 표시됩니다 . 이 단순화된 버전을 실행하면 동일한 결과를 볼 수 있습니다.

ls &

이 출력이 표시되지 않도록 하려면 명령을 괄호로 묶을 수 있습니다.

(ls &)

또는 귀하의 경우

(xdotool type "$(sed -n 1p file)" &)

특별한 경우에는 실제로 필요하지 않은 것 같으 &므로 명령에서 제거하는 것이 더 쉬울 수 있습니다.

xdotool type "$(sed -n 1p file)"

폴리스티렌

모든 파일을 처음부터 끝까지 순차적으로 실행하려면 다음과 같은 작업을 수행하는 것이 좋습니다.

x=0

그런 다음 각 행에 대해 다음을 실행합니다.

x=$((x+1)); (xdotool type "$(sed -n "${x}p" file)" &)

이렇게 하면 매번 번호를 변경할 필요가 없습니다.

또한 이것을 살펴보십시오: 파일의 모든 명령을 대화식으로 실행하는 방법

관련 정보