깨끗한 방법으로 프로그램을 기다립니다(예: 다른 터미널 창에서).

깨끗한 방법으로 프로그램을 기다립니다(예: 다른 터미널 창에서).

명령을 실행하고 첫 번째 명령이 완료된 후 다른 명령을 실행하려면 다음을 실행할 수 있습니다.

command1 &

실행 중인 프로세스의 PID를 인쇄합니다 command1.

command1그런 다음 작업이 끝나면 무엇을 해야 할지 생각하고 다음을 수행할 수 있습니다.

wait [PID printed by the previous command] && command2

command1그러나 이는 동일한 터미널 창 내에서만 작동하며 출력을 인쇄하면 매우 지저분해집니다. 새 터미널 창을 열고 기다리면 다음과 같은 내용이 표시됩니다.

$ wait 10668
bash: wait: pid 10668 is not a child of this shell

프로그램이 첫 번째 명령의 출력을 삭제하지 않고 현재 실행된 명령의 출력에 다음 명령을 쓸 때까지 기다리는 것을 지원하는 터미널 에뮬레이터가 있습니까(예: 에 파이핑 /dev/null)?

wait반드시 해결될 필요는 없습니다 . 마우스 오른쪽 버튼을 클릭하고 "반환 후 현재 명령 실행"을 선택하십시오.

단순히 명령을 연결하는 것이 아니라 명령을 실행하고그 다음에이 작업이 완료된 후 즉시 실행할 항목을 결정합니다.

답변1

일반적으로 장기 실행 명령을 내린 후 다음에 실행할 명령을 준비하려면 셸을 사용합니다.직업 통제그것을 달성하기 위해. 예를 들어, 당신은 을 command1주는 대신 을 주었고 &, 을 주고 싶어 command2하므로정지시키다현재 실행 중인 명령을 입력합니다 control-z. 이제 쉘 프롬프트가 다시 표시되므로 다음을 입력하십시오.

fg; command2

첫 번째 명령을 재개 하고 fg완료되면 쉘이 두 번째 명령을 시작합니다.

command1을 시작하면 &백그라운드에서 실행됩니다. 를 사용하여 전경으로 가져온 fg다음 일시 중지하고 이전과 동일한 작업을 수행할 수 있습니다.

답변2

이전 명령이 완료되자마자 명령을 실행하려면 ;다음과 같이 구분할 수 있습니다.

command1 ; command2

또는 다음과 같이 첫 번째 명령이 반환될 때 두 번째 명령을 실행하려는 경우 true:

command1 && command2

관련 정보