현재 명령의 중간에서 서브 쉘 실행


16

이 시나리오에서 자주 내 자신을 찾습니다. 명령을 입력하는 중이며 완료하기 전에 다른 것을 확인해야합니다.

지금까지 기억하고있는 현재 입력으로 일종의 서브 쉘을 여는 방법이 있습니까? 그런 다음이 서브 쉘을 종료하면 내가 있던 곳으로 돌아갑니다.

$ mylongcommand -n -e <SOME KEY COMBINATION WHICH OPENS A SUBSHELL>
$ date
...
$ exit
$ mylongcommand -n -e <BACK TO WHERE I WAS>

나는 사용하고있다 zsh


2
왜 다른 터미널 창을 열지 않겠습니까?
Barmar

@Barmar 저에게는 대부분의 Linux 시스템에서 GUI를 사용하지 않으므로 TTY를 전환해야합니다. 다시 인증해야 함을 의미합니다. 아래 옵션이 훨씬 더 효율적입니다.
Zachary Brady

3
콘솔에서 screen또는 tmux여러 가상 터미널을 사용할 수 있습니다 .
Barmar

답변:


16

EscQ명령 버퍼를 저장하고 새 명령을 입력 할 수 있는 키 조합 이 있습니다. 명령을 실행 한 후 버퍼에는 이전에 입력 한 내용이 포함됩니다. 완료하기 전에 다른 명령을 실행해야하는 경우 EscQ다시 입력 할 수 있습니다 .

( EscQ아직 누른 후 서브 쉘을 열려고하지 않았습니다.)

http://zsh.sourceforge.net/Intro/intro_10.html을 참조 하여 "esc-q"를 검색 하십시오.


정확히 내가 원하는 것, 고마워! 즉시 반환하는 대신 중첩 쉘을 실행할 수는 있지만 사용 사례의 경우 즉시 반환하면 완벽하게 작동합니다.
Panayiotis 2016 년


7

이 내 솔루션은 확실히 낮은 기술과 투박하지만, 당신은 아마 이미 익숙 키 시퀀스에 의존 : 히트 Ctrl+ A, 다음 #, 다음 ENTER.

이것은 #줄의 시작 부분에 a 를 삽입하여 주석을 작성한 다음 실행하여 명령 히스토리로 밀어 넣는 효과가 있습니다. 그런 다음 보조 명령을 입력 한 다음 명령 기록을 통해 주석이 달린 명령으로 스크롤하고을 제거한 다음 #필요에 따라 명령을 완료하십시오.


키보드의 "홈"버튼을 눌러야합니다. 1 번의 키 누르기 및 실제로 누르는 데 필요한 에너지
Ferrybig

@Ferrybig-예, 좋습니다. 제 일상 키보드에는 HOME 키 가없는 MacBook Pro가 있습니다 . 등가이다 FN + 왼쪽 화살표 하지만 가입 단말기의 상단이 스크롤.
Digital Trauma

2

입력 하는 명령을 "일시 중지"하려면 Ctrl+ Z를 입력하고 다른 명령을 입력하십시오. 해당 명령을 실행하거나 Ctrl+로 중단 C하면 일시 중단 된 명령이 에디션으로 돌아옵니다 (커서 위치를 기억하더라도). 또한 편의상 Ctrl+를 입력 할 때 명령 줄이 비어 있으면 대신 Z키가 bg내장 기능을 호출 하므로 double 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

(이전에 게시 뭔가를 확인하면서 반 형식의 명령을 기억 주로 당신이 편리 그래서 아무것도 할 수 없습니다 떠들썩한 파티를위한 솔루션을 제공합니다.이의 약간 애호가 버전입니다 내장의 결합 M-qpush-line .)

이것은 하위 쉘을 실행하지 않습니다. 이전 명령을 "중지"한 후에 입력 한 명령은 동일한 쉘에서 실행됩니다. 이를 통해 다른 디렉토리에서 실행하려는 명령을 입력 한 후 현재 디렉토리를 변경하는 등의 작업을 수행 할 수 있습니다. 새로운 쉘 인스턴스를 실행하려면 zsh키 바인딩에서 실행할 수 있지만 특히 유용하지는 않습니다.

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