bash에서 현재 입력을 지우려면 어떻게해야합니까?


172

bash에서 다음과 같은 명령을 작성하기 시작한다고 가정하십시오.

$ rm -rf /foo/bar/really/long/path/here

그리고 나서 이것을 실행하고 싶지 않다는 것을 깨달으십시오. 한두 번의 키 입력으로 입력을 지우는 방법이 있습니까?

내가 최근에하고있는 일은 echo를 붙이고 입력을 따옴표 (Ctrl + A echo ",, Ctrl + E, ")로 묶은 다음 Enter 키를 누르는 것 입니다. 더 빠른 방법이 있습니까?


또는 명령을 붙여넣고 잘못된 단일 라이너라는 것을 알고 있다고 가정하십시오. 백 스페이스는 약 20 자 후에 정말 오래되었습니다!
bgStack15

<kbd> Ctrl </ kbd>-<kbd> C </ kbd>, 기록을 유지하려면 stackoverflow.com/a/9679852/6521116
Kris Roofe

답변:


286
  1. 커서 앞의 모든 것을 삭제하려면 Ctrl- U를 누르십시오 . 삭제 된 명령은 버퍼에 저장됩니다. Ctrl- Y를 눌러 삭제 된 명령을 붙여 넣습니다.

    (선택 사항 : End또는 Ctrl- E를 눌러 입력의 끝으로 이동합니다.)

  2. 또는 입력 한 내용을 중단하려면 Ctrl- C를 누르십시오 .


28
주의 사항 : Ctrl-C는 현재 프롬프트를 종료하고 새 프롬프트를 시작하고 리턴 코드를 1로 설정합니다.
user716468

14
그것에 익숙해지지 말고 Ctrl-U를 사용하십시오. Ctrl-C는 bash에서 그렇게 나쁘지 않지만, 예를 들어 mysql 클라이언트 프롬프트가 있으면 Ctrl-C는 서버에서 연결을 끊어 정말 성가신 것입니다.
Christian

1
많은 시스템에는 지금까지 입력을 종료하는 터미널 'kill'문자도 있습니다. 종종, 그것은 control-X입니다. 로 확인할 수 있습니다 stty -a. 그리고 터미널 컨트롤을 적극적으로 수정하지 않는 모든 프로그램에서 작동합니다.
Jonathan Leffler

Ctrl-A 다음에 Ctrl-K도 작동합니다. 'killed'텍스트가 저장되며 Ctrl-Y를 사용하여 붙여 넣을 수 있습니다. 이 키 입력은 실제로 읽기 라인 라이브러리 cnswww.cns.cwru.edu/php/chet/readline/rluserman.html에서 가져옵니다 . 따라서 사용자 인터페이스가 라이브러리를 사용하는 모든 도구 (실제로 Emacs, bash, 기타..). .inputrc 파일을 편집하여 동작을 사용자 정의 할 수 있습니다 (자세한 내용은 위의 링크를 참조하십시오).
rkachach

93

Ctrl+ 해보세요 U. 입력 라인이 지워집니다.


7
고마워, 나는 이것을 거의 대답으로 받아 들였다. 그러나 커서 앞의 입력 만 지 웁니다. 어떤 경우에는 명령을 편집하는 중이므로 "현재 입력을 폐기"하는 것처럼 Ctrl + U 대신 Ctrl + C를 기억합니다.
user85509 2016 년


21

Ctrl- U, Ctrl- K물론 트릭을 수행합니다.

Ctrl- U줄의 시작 부분부터 커서까지 모든 것을 삭제합니다 Ctrl.- K커서에서 줄의 끝까지 모든 것을 삭제합니다. (때로는 하나만 사용하는 것이 유용합니다.)


13

이를위한 두 가지 옵션이 있습니다

ctrl+ c-커서의 위치에 관계없이 전체 줄을 지 웁니다.

ctrl+ u-커서 위치에서 시작까지 선을 지 웁니다.


2
"Cu (또는 Ce와 Cu)를 사용하면 버퍼에 클리어 한 내용을 저장하여 나중에 Cy를 사용하여 붙여 넣을 수 있다고 고려하십시오." Markisisme 더 간단한 단일 명령은 ctrl + _입니다. stackoverflow.com/questions/1056440/… john kug의 답변-방금 시작한 stackoverflow는 귀하의 답변에 의견을 추가하기에 충분한 포인트가 없습니다.
vks

9

좋은 단축키는을 누르는 것 Esc#입니다. #문자 를 추가하고 (따라서 줄을 주석으로 표시) Enter 키를 누릅니다. 그런 다음 여전히 명령이 필요하다고 결정하면 여전히 역사에 있습니다. :)


3
대부분의 터미널에서이 키는 Alt + #과 동일하므로 키를 한 번만 누르면됩니다.
Dolda2000

간단하지만 영리한 솔루션이며 이것이 명령을 취소하는보다 사용자 친화적 인 방법이라고 생각합니다. 내가 찾던 정확히 :)
Cas

9

누르면 Esc플러스Backspacebash에서 를 커서 위치까지 모든 것이 지워집니다.

(Cygwin에서는 다음 단어까지 입력이 지워집니다. 단어는 공백, 밑줄 등으로 구분됩니다.)


3

사용하는 것을 고려 Ctrl- U(또는 Ctrl- E다음과 Ctrl- U) 당신이 버퍼에 취소 무엇을 저장할 것은 당신이 다음 사용하여 나중에 붙여 넣을 수 있도록 Ctrl- Y.


3

vi 모드 에서 Bash를 사용하는 경우 (로 설정 set -o vi)을 눌러 Escvi의 일반 모드로 전환하고을 입력 dd하여 현재 행을 삭제하십시오!


3

이것은 knittl의 답변 의 확장입니다 해시로 접두사를 붙여 콘솔 히스토리에 라인을 저장하는 을 . 실수로 덮어 쓰거나 참조 용으로 절단 선을 볼 수없는 등 클립 보드의 단점 극복

주석 행 및 새 프롬프트 반환

키 단축키를 사용하십시오.

  • Esc,#
  • Alt+#

해시 문자 #가 줄 앞에 추가되어 전체 줄을 주석으로 바꿉니다. 마치 마치 사용자가 enter를 누른 것처럼 새 프롬프트를 반환합니다. 예 :

$ #rm -rf /foo/bar/really/long/path/here
$

주석 처리 된 줄 검색

콘솔 히스토리에서 이전 라인을 복구하려면 다음 단축키 중 하나를 사용하십시오.

  • Up
  • Ctrl+p

원하는 줄이 나타날 때까지 키 바로 가기를 반복하십시오.


빠른 해시 접두사 제거

라인의 해시 #접두사 를 제거하기 위해 몇 가지 다른 옵션을 사용할 수 있습니다.

첫 번째 문자를 제거하고 즉시 명령을 실행하십시오.

  • Esc, 1, Esc,#
  • Alt+ -, Alt+#

명령을 실행하지 않고 커서를 움직여 첫 번째 문자를 시작하고 제거하십시오.

  • Home, Delete
  • Ctrl+ a, Ctrl+d

2

현재 줄을 삭제하려면 다음을 시도하십시오.

Ctrl- X, Ctrl-U

대안으로 다음을 사용할 수 있습니다.

Esc-D

~ / .inputrc에는 다음이 필요합니다.

"\ed": kill-whole-line 

참조 : http://codesnippets.joyent.com/posts/show/1690


전체 행을 지우려면 이스케이프 키만 추가 "\e\e": kill-whole-line하려면 (ESC 키를 두 번 눌러야 함)
binaryfunt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.