Bash에서 나머지 명령 목록을 어떻게 취소합니까? 중단하지 않는 것이 매우 중요

Bash에서 때로는 명령 목록을 입력하고을 누르고 Enter나중에 목록 끝 부분에 일부 명령에 실수가 있음을 알게됩니다. Ctrl+를 누르면 C현재 실행중인 명령이 종료되고 나머지 목록은 취소됩니다. 현재 실행중인 명령 종료 하지 않고 나머지 목록을 취소 할 수있는 방법이 있습니까?

예를 들어, 다음과 같은 것을 입력했다고 가정 해 봅시다.

foo; bar

또는

foo && bar

where foo는 중단하지 않는 것이 매우 중요 bar하고 돌이킬 수없는 원치 않는 일 (예 : shutdown -h now또는 rm -rf /)을 수행하는 장기 실행 명령입니다 . 하지만 foo여전히 실행되고, 수 있도록 쉘을 말하는 일반적인 방법이 foo마무리하지만 실행하지 bar이후는? (그래, 난에 대한 사용 권한을 변경할 수 있습니다 bar그래서 실행 아니에요,하지만 경우에 특히 편리 아니라 bar같은 것입니다 rm내가 그동안 사용하고자하는 즉,도 내가 소유하지 않은 경우 작동합니다 bar또는 경우는 bar내장 명령이다.)



답변

CtrlZ프로그램을 백그라운드 프로세스로 전환 하는 데 사용 하면 트릭이 발생합니다.

foo && bar

foo; bar필요한 방식으로 제어 할 수없는 의견으로 지적 한 @Arkadiusz Drabczyk에게 감사드립니다 .

그때:

^Z

[1]+  Stopped                 foo

이 명령은 첫 번째 작업 만 중지하고

fg %1

그러면 작업 만 foo포 그라운드로 가져오고 작업이 완료되고 종료됩니다.

추신 : 이것은 파일에 쓰는 두 개의 스크립트로 확인할 수 있습니다. 첫 번째는 몇 초 동안 잠을 자서 시간을 되돌릴 수 있습니다.

나는 왜 CtrlZ명령 만 실행 명령을 처리하고 나머지는 남겨 둡니다. 알고 싶어요.


답변