
나는 종종 이런 상황에 처해 있습니다. 명령을 입력하고 있는데 명령을 완료하기 전에 다른 사항을 확인해야 합니다.
일종의 하위 쉘을 열고 지금까지의 현재 입력을 기억한 다음 이 하위 쉘을 종료하면 원래 있던 곳으로 돌아갈 수 있는 방법이 있습니까?
$ mylongcommand -n -e <SOME KEY COMBINATION WHICH OPENS A SUBSHELL>
$ date
...
$ exit
$ mylongcommand -n -e <BACK TO WHERE I WAS>
나는 그것을 사용하고 있다zsh
답변1
저는 보통 Ctrl+를 사용하여 U현재 줄을 지우고 버퍼에 저장합니다. 거기서부터 나는 이전에 해야 했던 일을 하기 시작했습니다 mylongcommand
. 그런 다음 준비가 되면 Ctrl+를 사용하여 프롬프트에 다시 Y붙여넣습니다 .mylongcommand
답변2
EscQ명령 버퍼를 저장하고 새 명령을 입력할 수 있는 키 조합이 있습니다 . 명령을 실행한 후 버퍼에는 이전에 입력한 내용이 포함됩니다. 이 작업을 완료하기 전에 다른 명령을 실행해야 하는 경우 EscQ해당 명령을 다시 입력할 수 있습니다.
(저는 서브쉘을 누른 후 열려고 시도하지 않았습니다 EscQ.)
바라보다http://zsh.sourceforge.net/Intro/intro_10.html"esc-q"를 검색하세요.
답변3
Ctrl내 솔루션은 확실히 기술 수준이 낮고 투박하지만 + A, , 을 차례로 #탭 하는 것과 같이 이미 익숙할 수도 있는 키 시퀀스에 의존합니다 ENTER.
#
이는 줄 시작 부분에 a를 삽입하여 주석으로 만든 다음 실행하여 명령 기록에 푸시하는 효과가 있습니다. 그런 다음 보조 명령을 입력하고 명령 기록을 주석 처리된 명령으로 스크롤하고 #
필요에 따라 명령을 삭제하고 완료할 수 있습니다.
답변4
Ctrl+를 입력하여 Z입력 중인 명령을 "일시 중지"하고 다른 명령을 입력합니다. 명령을 실행한 후(또는 Ctrl+ 로 중단 C) 보류 중인 명령이 편집을 위해 반환됩니다(커서 위치도 기억됩니다). 편의상 Ctrl+를 입력할 때 명령줄이 비어 있으면 Z해당 키가 bg
내장 명령을 호출합니다. 따라서 Ctrl+를 두 번 누르면 Z실행 중인 명령이 백그라운드로 직접 전송됩니다.
fancy-ctrl-z () {
emulate -LR zsh
if [[ $#BUFFER -eq 0 ]]; then
bg
zle redisplay
else
zle push-input
fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z
(이전에 포스팅한무언가를 확인할 때 반만 입력된 명령을 기억하세요주로 그렇게 편리하게 아무것도 할 수 없는 bash 솔루션이 있습니다. 이건 좀 더 발전된 버전이에요M-q
에 대한 내장 바인딩push-line
.)
이는 하위 쉘을 실행하지 않습니다. 이전 명령을 "일시 중지"한 후에 입력하는 명령은 동일한 쉘에서 실행됩니다. 명령을 입력한 후 다른 디렉터리에서 실행하려고 했다는 것을 알게 되면 현재 디렉터리를 변경하는 등의 작업을 수행할 수 있습니다. 새로운 셸 인스턴스를 실행하려면 zsh
키 바인딩을 통해 실행할 수 있지만 이것이 특별히 유용하다고 생각하지는 않습니다.