Bash 매뉴얼 페이지의 전체 부분은 다음과 같습니다.
bash가 실행중인 운영 체제가 작업 제어를 지원하는 경우 bash에는이를 사용하는 기능이 있습니다. 프로세스가 실행되는 동안 일시 중단 문자 (일반적으로 ^ Z, Control-Z)를 입력하면 해당 프로세스가 중지되고 제어를 bash로 리턴합니다.
지연된 일시 중단 문자 (일반적으로 ^ Y, Control-Y)를 입력하면 터미널에서 입력을 읽으려고 할 때 프로세스가 중지되고 제어는 bash로 리턴됩니다. 그런 다음 사용자는bg
백그라운드에서 작업 을 계속하기 위해 명령을 사용하여이 작업의 상태를 조작 할 수 있습니다 .fg
명령을 포 그라운드에서 계속하거나 kill 명령을 사용하여 종료하십시오. ^ Z는 즉시 적용되며 보류중인 출력과 자동 완성 기능을 버리는 추가 부작용이 있습니다.
나는 결코 사용하지 않았다 Ctrl– Y; 나는 단지 그것에 대해 배웠다. 나는 Ctrl– Z(일시 중단)으로 만 잘했습니다.
나는이 옵션이 무엇인지 상상하는 것을 시도하고있다 위해 . 언제 유용할까요?
(이 기능은 모든 Unix 변형에는 존재하지 않습니다. Solaris 및 FreeBSD 에는 있지만 Linux에는 없습니다. 해당 설정은 stty dsusp
입니다.)
아마도 덜 주관적 : 함께 수행 할 수 있습니다 무엇인가 Ctrl– Y와 마찬가지로 쉽게 수행 할 수 없습니다 Ctrl– Z?
답변
csh에 대한 4BSD 매뉴얼에서 :
A
^Z
는 즉시 적용되며 보류중인 출력 및 읽지 않은 입력이 입력 될 때 삭제되는 인터럽트와 같습니다.^Y
프로그램이이를 읽으 려고 시도 할 때까지 STOP 신호를 생성하지 않는 또 다른 특수 키가 있습니다 (2). 이 명령은 읽은 후에 중지하려는 작업에 대한 일부 명령을 준비 할 때 유용하게 미리 입력 할 수 있습니다.
따라서 첫 번째 입력을 처리하는 동안 여러 입력을 입력하고 완료된 후 작업을 중지하는 것이 목적입니다.
답변
루프 읽기 입력과 실행이 있다고 가정하십시오. 새로운 명령을 얻기 위해 명령 행으로 돌아 가기 전에 작업이 명령을 중단하지 않고 계산하는 현재 명령을 완료하도록하는 것이 유용 할 수 있습니다. 따라서 사이클을 종료합니다. 이는 루프를 정상적으로 종료하고 read
제한 시간이 초과 되면 루프 가 다시 실행되지 않도록합니다 .
답변
유용 할 수있는 한 가지 시나리오를 생각할 수 있지만, 이는 엣지 케이스입니다.
정리 루틴의 일부로 삭제되기 전에 분석하려는 임시 파일을 작성하는 스크립트를 디버깅한다고 가정하십시오.
read foo
파일이 작성된 후 (정리 전) 어딘가에 추가 하고 스크립트를 실행 한 다음 생성 되는대로 Ctrl– Y를 누를 수 있습니다. 그런 다음 필요한 작업을 수행하기 위해 백그라운드에서 스크립트를 일시 중지 한 상태로 프롬프트가 표시 fg
되고 스크립트를 완료 할 수 있습니다 .
답변
내가 생각할 수있는 유일한 시나리오는 (심지어 설득력이 없다고 생각하더라도) 쉘 명령에 미리 입력을 사용하려는 경우입니다. 나중에 어떤 시간에 입력을 읽는 명령이 실행 중이라고 가정하십시오. 그런 다음 ^ Y를 수행 한 다음 실행중인 명령이 일시 중단 될 때 실행할 다음 셸 명령을 즉시 입력 할 수 있습니다. 필자는 수십 년 동안 BSD 유닉스를 실제로 사용했다고 생각하지 않습니다.