Bash에서는 가끔 입력합니다.명령 목록를 클릭했지만 Enter나중에 목록 끝 부분에 있는 일부 명령에 오류가 있음을 깨달았습니다. Ctrl+를 누르면 C현재 실행 중인 명령이 종료되고 목록의 나머지 부분이 취소된다는 것을 알고 있습니다. 목록의 나머지 부분을 취소할 수 있는 방법이 있나요?아니요현재 실행 중인 명령을 종료하시겠습니까?
예를 들어 내가 다음과 같이 입력한다고 가정해 보겠습니다.
foo; bar
또는
foo && bar
이는 foo
장기 실행 명령이므로 중단하지 않는 것이 매우 중요하며 bar
되돌릴 수 없고 원치 않는 작업(예: shutdown -h now
또는 rm -rf /
)을 수행합니다. 쉘이 계속 실행되는 동안 foo
완료되도록 하고 foo
나중에는 실행하지 않도록 지시하는 일반적인 방법이 있습니까? bar
(네, 권한을 변경해서 bar
실행 불가능하게 만들 수도 있지만, 그런 걸 동시에 사용하고 싶으면 bar
별로 편리하지 않고, 없거나 내장되어 있으면 안되죠. 작동하지 않습니다.)rm
bar
bar
답변1
CtrlZ프로그램을 백그라운드 프로세스로 이동 하는 것이 효과가 있다는 것을 알았습니다 .
foo && bar
foo; bar
원하는 방식으로 제어 기능을 제공하지 않는다는 의견을 지적한 @Arkadiusz Drabczyk에게 감사드립니다 .
그 다음에:
^Z
[1]+ Stopped foo
이 명령은 첫 번째 작업만 중지하고
fg %1
그러면 foo
작업이 전면으로 이동하여 작업이 완료되고 종료됩니다.
추신: 이는 파일에 쓰는 두 개의 스크립트로 확인할 수 있습니다. 첫 번째는 다시 넣을 시간을 주기 위해 몇 초 동안 잠을 잔다.
CtrlZ왜 실행 중인 명령만 처리하고 나머지는 무시하는지 이해가 되지 않습니다 . 나는 당신을 알고 싶습니다.