OS X의 터미널에서 명령 지우기


24

터미널 'mv * .jpg .. \ photos'에 명령을 입력했는데 입력 할 때 더 이상이 명령을 실행하고 싶지 않다고 생각하십시오. 전체 문장을 삭제하고 싶습니다. 전체 화면을 지우거나 bash 기록을 삭제하고 싶지 않습니다. 현재 줄을 중단하고 지우고 싶습니다.

키보드 단축키가 있거나 실제로 각 문자를 삭제해야합니까?

답변:


36

bash에 있다고 가정하면 Ctrl+를 사용하십시오 U.


감사! 그랬어. 어딘가에 문서화 된 키보드 단축키 형식 목록이 있습니까?
Paul Alexander


2
이것은 zshell에서도 저에게 효과적이었습니다.
LandonSchropp

1
커서가 줄의 끝에있는 경우에만 작동합니다. 커서가 시작되는 상황에서는 CTRL-K
Jarrod Nettles

스크립트에서 어떻게 이런 일이 발생합니까?
Jonny

7

bash를 포함하여 명령 줄을 입력 한 다음 해당 줄을 실행하기를 기다리는 많은 프로그램은 Ctrl+ C를 사용하여 "현재 작업을 중단하고 기본 프롬프트로 돌아갑니다"를 의미합니다.

bash를 포함한 일부 프로그램은 Ctrl+ U( OS X의 터미널에서 명령 지우기 )를 사용하여 "행 시작을 커서까지"(또는 "전체 행 지우기")를 의미합니다.

bash에서 Ctrl+ CCtrl+ 사이의 관찰 가능한 차이점은 U다음 과 같습니다.

  • 당신은 취소 할 수 있습니다 Ctrl+ U하지만, Ctrl+ C.
  • Ctrl+ U는 커서 뒤에 줄의 일부를 유지합니다 (있는 경우).
  • Ctrl+ U화면에서 영향을받는 텍스트를 지 웁니다. Ctrl+ C는 현재 줄 아래에 새 프롬프트를 표시합니다.

때로는 명령 입력을 중지하고 나중에 실행하기 위해 셸 기록에 입력 할 수도 있습니다. 유용한 트릭은 #줄의 시작 부분에 를 넣고 실행하는 것입니다. 줄은 이제 주석이므로 아무런 작업도 수행하지 않습니다. bash에는 단일 키 바로 가기가 있습니다. Alt+ #.


2

readline아마라는 키에 바인딩되지 않는 기능 kill-whole-line커서 만 전에 일부를 죽이는 반대로 전체 라인을 죽일 것이다 ( unix-line-discard다소 잘못된 이름이며에 바인딩 Ctrl- u).

사용 가능한 모든 키 입력에 바인딩 할 수 있습니다. 내가 좋아하는 ShiftAlt- U가 관련 기능이기 때문에. 이 키 입력은 바인딩 do-lowercase-version되지 않은 버전이 수행하는 모든 작업 을 수행한다는 의미입니다 (이 경우 upcase-word). 실제로 두 개의 키가 필요하지 않으므로이 키를 사용하겠습니다.

다음과 같이 바인딩을 작성하여 명령 행에서 시도해 볼 수 있습니다.

bind '"\eU":kill-whole-line'

또는 ~/.inputrc파일에 다음 줄을 넣어서 지속 시키십시오 .

"\eU":kill-whole-line

을 취소하려면 Ctrl- u또는 ShiftAlt- U(또는 취소 할 수 있습니다 모든 작업)을 눌러 Ctrl- Shift- _(밑줄) 또는 Ctrl- x Ctrl- u(두 개의 키 입력). 또는 키를 눌러 죽인 것을 다시 붙여 넣을 수 있습니다 Ctrl- y해당 텍스트의 여러 사본을 원할 경우 반복 할 수 있습니다.

그런데 커서에서 줄 끝까지 텍스트를 죽이려면 Ctrl- 를 누를 수 있습니다 k. 그래서 그 대신 바인딩 위에서 설명한 일을, 당신은 눌러 전체 라인을 죽일 수 Ctrl- u Ctrl- k. 두 번째 키 스트로크에 의해 강제 종료 된 부분 만 강제 종료 버퍼에 저장되지만 여전히 두 번 복구하기 위해 두 번 실행 취소 할 수 있습니다.

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