Bash의 여러 줄 명령에서 이전 줄을 어떻게 편집합니까?


20

Bash에서 여러 행에 걸쳐있는 명령을 입력 할 때 이전 행을 어떻게 편집합니까? 저는 GNOME 터미널을 사용하는 Linux Mint (Lisa) 사용자입니다.

예를 들어, 다음과 같이 입력합니다.

$ echo "foo bar
> baz
>

그리고 나서 명령의 세 번째 줄을 입력하려고 할 때 "foo"와 "bar"를 별도의 줄에 넣고 싶다는 것을 갑자기 깨닫게됩니다. 어떻게하면 "foo"와 "bar"사이에서 커서를 다른 위치로 옮겨서 Enter 키를 누를 수 있고 별도의 줄에 넣을 수 있습니까?

(당신이 생각하는 것처럼 쉽지 않습니다. 위쪽 화살표는 작동하지 않으며 Ctrl-P도 않습니다. 그래서 게시하기 전에 시도하십시오! 감사합니다!)


수락 된 대답은 해결책이 없다고 말하고 있지만 거기에 있습니다. 만나다 이하
cdosborn

답변:


14

불행히도, 그것은 최대입니다. bash, 아니 터미널에. 선택할 수있는 옵션은 다음과 같습니다.

  1. 줄 바꿈 대신 세미콜론을 사용하십시오. 단 한 번에 한 줄 위로 이동할 수는 없지만 문자 또는 단어 이동 명령을 사용해야합니다. (이상하게도, zsh 적어도 히스토리 편집시 복합 명령 내에서 이동할 수 있습니다. 흐름 명령.) 때때로 fc (이전 명령으로 편집기로 사용자를 안내 함)는 복합 명령을 처리하는 가장 쉬운 방법입니다.

  2. Bash를 사용하는 경우 다음 키 조합을 사용하십시오.

    ctrl x e
    

    텍스트 편집기를 사용하여 작업중인 명령이 열립니다. 파일을 저장하고 종료하십시오. (나는 그 명령을 Shell Hater의 프리젠 테이션 .) Zsh 사용자는 이 대안 .


1
bash 맨 페이지는 사용 된 편집기를 변경하는 방법을 설명합니다. edit-and-execute-command (C-xC-e) - 현재 명령 행에서 편집기를 호출하고 그 결과를 쉘 명령으로 실행합니다. Bash는 $ VISUAL, $ EDITOR 및 emacs를 편집기 순서로 호출하려고 시도합니다.
Matthew

에디터를 열지 않고도 해결책이 있습니다.
cdosborn

기술적으로 bash가 아니라 bash가 입력을 얻기 위해 사용하는 "readline"라이브러리입니다.
Christian Herenz

8

해결 방법은 여러 줄이 올 때까지 명령을 입력하지 않으려면 다음과 같이 입력하십시오. Ctrl V Ctrl j 다음 줄로 가고 싶을 때. 메타 돌아가는 말.

solution

@ rici의 신용 대답


1

충분히 재미있게, Ctrl + C 당신이 찾고있는 것입니다.

너가에있을 때

$ echo "foo bar
> baz
>

그냥 눌러 Ctrl + C (편집 된 명령 줄이 일시 중단됩니다) 쪽으로 (이전 기록). 귀하의 메시지는 다음과 같습니다 : (& gt;

$ echo "foo bar
baz

이제 당신은 왼쪽 권리 심지어 선 점프를 통해.

하나의 변종 만 있습니다. 다른 행을 추가하려면 마지막 문자에 있어야합니다. 따라서 기존 행을 편집하려면 이동하십시오 ( Ctrl + A ) 언론 들어가다 그걸로 충분하거나 끝나면 ( Ctrl + E )를 사용하여 줄을 추가하십시오. 들어가다 . 또 다른 단점은 Ctrl + _ (실행 취소)는 마지막 변경 사항 만 복원합니다. Ctrl + C

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