명령 행으로 돌아 가기 위해 CTRL + C를 사용하는 것이 올바르지 않습니까?


27

사용 tail -f중이고 쉘로 돌아가고 싶을 때는 항상을 사용 CTRL+C합니다. 또는 명령을 입력 할 때 명령을 중단하고 CTRL+C다시 시작할 때 빈 명령 줄 프롬프트로 돌아 가기 만하면 됩니다. 이것이 나쁜 습관으로 간주됩니까? 때로는 무언가를 벗어나는 더 좋은 방법이 있다고 생각하지만 실제로는 전혀 모른다.


6
부분적으로 입력 된 쉘 명령을 취소하려면 Control-U 또는 Delete (tty 설정 및 키 바인딩에 따라 다름)를 사용할 수 있지만 Control-C를 사용하는 데 아무런 문제가 없습니다.
Keith Thompson

@KeithThompson Ctrl + U에 감사드립니다. 저는 그 사실을 몰랐습니다 :-)
Patrick

레코드의 경우 Cu는 실제로 입력 한 명령을 취소 하지 않고 붙여 넣기 버퍼로 이동합니다 (일부 프로그램의 "잘라 내기"기능과 유사).
Chris Down

답변:


36

Ctrl+ C는 SIGINT를 프로그램으로 보냅니다. 이것은 프로그램에게 프로세스를 중단하고 끝내고 싶다고 알려줍니다. 대부분의 프로그램은 이것을 올바르게 잡아서 깨끗하게 종료합니다. 따라서, 이것은 대부분의 프로그램을 끝내는 "올바른"방법입니다.

다른 신호를 프로그램으로 전송하기위한 다른 키보드 단축키가 있지만 가장 일반적입니다.


9
사용자로부터 입력을 읽는 프로그램에 대한 Ctrl + D도 있습니다. Ctrl + D는 프로그램의 STDIN을 닫습니다. 쉘을 정상적으로 종료하려면 종료를 입력하는 것과 정확히 동일하게 사용할 수 있습니다.
Patrick

2
@Patrick Ctrl + D는 실제로 파일 끝 표시기를 스트림으로 보냅니다. 적절하게 응답하는 것은 프로그램에 달려 있습니다 (일반적으로 파일 스트림 닫기).
Chris S

그것이 STDIN을 닫는 것입니다. 파이프 / 스트림을 닫지 않으면 EOF를받을 수 없습니다.
Patrick

9
패트릭, 세 번 이상 틀렸어 첫째 : Control + D에는 파이프에 대한 의미가 없습니다. 둘째 : EOF 특수 문자는 아무것도 닫지 않습니다. 현재 시스템 호출 에서 0 바이트 의 1 회 리턴 (라인 버퍼가 비어 있다고 가정)이 발생합니다 read(). 다음 read()은 영향을받지 않습니다. 셋째, 이 중 어느 것도 적용되지 않습니다 같은 비 정식 모드로 제어 규칙을 넣어 프로그램에 대부분의 쉘 프로그램 수십 년 지난 몇과 GNU와 같은 라이브러리 등을 사용하여 실제로 다른 프로그램에서 readline.
JdeBP


11

입력하는 동안 긴 명령을 중단하기 위해 때로는 Enter 키를 누르기 전에 줄의 시작 부분으로 이동하고 주석 기호를 삽입하십시오.

Home#Enter

Pos1#Return

예를 들어, 긴 경로로 복사 명령을 입력하고 그 동안 먼저 디렉토리를 작성해야하지만 나중에 명령을 반복하려는 경우에 유용합니다. 그런 다음 역사에서 가져 와서 해시를 삭제하고 입력해야합니다.

Bash에서는 바로 가기를 사용할 수 있습니다.

Alt+#

의견 (감사합니다, @Zorawar)에서 지적한대로 명령을 다시 강조하십시오.


6
Ctrl-A홈 줄에서 손가락을 떼지 않고도 사용할 수 있습니다 .
Dietrich Epp

1
그리고 Ctrl-E마지막으로갑니다.
Dave

@Dave : 그렇습니다. 그러나 명령을 확인하기 위해 엔터를 누르기 위해 끝으로 이동할 필요는 없습니다. 명령 행은 편집기가 아니므로 개행을 삽입 할 수 있습니다.
사용자 알 수 없음

2
bash에서는을 눌러 동일한 작업을 수행 할 수 있습니다 Alt-#: 주석을 넣고 명령을 실행하여 기록에 넣습니다.
Zorawar

8

일반적으로 프로그램에서 대화식으로 종료 할 수있는 방법이 없을 때 Ctrl+를 사용하는 C것이 좋습니다 (설계 상 또는 더 자주 동결되거나 사용할 수 없기 때문에). 대화식 모드에서 실제로 원하는 키 콤보는 Ctrl+ D일 수 있습니다.이 경우 + 가 전송 EOF되고 입력의 끝을 알립니다 .


1

Bash를 사용하는 경우 Ctrl- 를 사용 하여 "현재 작업을 백그라운드에 배치"를 Z입력 할 수도 있습니다 bg.


0

@Patrick이 수락 된 답변에 대한 의견에서 말했듯이,

Ctrl+D사용자로부터 입력을 읽는 프로그램 도 있습니다 . Ctrl+D프로그램에 STDIN을 닫습니다.

이것은 Ctrl+C사용 후 명령 줄을 다시 가져 오지 못할 때 도움이되었습니다.>>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.