때로는 명령 프롬프트에 긴 명령을 입력한 다음 실제로 Enter 키를 누르고 명령을 실행하기 전에 확인해야 할 사항이 있다는 것을 알게 됩니다. 를 누르고 ctrl+c
새 명령을 실행한 다음 취소된 명령을 다시 입력하고 실행합니다.
취소하고 싶은 명령을 "저장" ctrl+c
하고 "뭔가 확인" 명령을 완료한 후 다시 시작하는 방법이 있나요?
SSH를 통해 원격 서버에 있기 때문에 다른 터미널을 열고 싶지 않습니다.
대포 사격:
$ git commit -am 'FOO-123: fix issue with dorks around bars'^C
$ git status
# On branch foo
modified: foo.php
$ git commit -am 'FOO-123: fix issue with dorks around bars'
1 file changed, 46 deletions(-)
$
답변1
Unix에서는 명령줄 편집기를 사용하여 이와 같은 작업을 수행할 수 있습니다. 나는 일반적으로 set -o emacs
명령줄에서 다음 Emacs 키를 직접 사용할 수 있도록 다음 명령을 실행합니다 .
- 명령줄을 보여주세요
Ctrl-A
- 명령줄의 시작 부분으로 이동Ctrl-K
- 전체 명령줄을 내부 버퍼로 잘라냅니다.- ...여기서 필요한 모든 작업을 수행하세요...
Ctrl-Y
- 버퍼의 명령을 명령줄에 붙여넣기
set -o vi
단축키를 사용하여 vi
이 작업을 수행 할 수도 있습니다 .
답변2
내가 항상 하는 일은 #
명령 앞에 주석 표시를 넣는 것입니다. 나중에 기록에서 이를 기억하고 주석 표시를 제거한 다음 명령을 실행할 수 있습니다.
답변3
ctrl-c를 누르는 대신 줄의 시작 부분으로 이동하고 다음을 수행합니다.
$ history -s "git commit -am 'FOO-123: fix issue with dorks around bars'"
Enter 키를 누릅니다. 실행되지는 않지만 이제 기록의 마지막 줄입니다. 이것이 bash에만 해당되는지 확실하지 않습니다.
답변4
Goldilocks의 제안과 유사하게 줄의 시작 부분으로 이동하고(Emacs 동작은 Ctrl-A입니다) 앞에 "#"을 추가합니다. 이렇게 하면 명령을 실행하는 대신 주석으로 변환됩니다. 명령을 호출하는 데 사용하는 모든 트릭(예: Ctrl-R 또는 기록)을 사용하여 명령을 호출할 수 있으며, 그런 다음 시작 부분으로 이동하여 #을 제거할 수 있습니다.