Eu frequentemente me encontro nesse cenário. Estou no meio de digitar um comando e preciso verificar outra coisa antes de concluí-lo.
Existe uma maneira de abrir um subshell de algum tipo com a minha entrada atual sendo lembrada até agora, então quando eu sair desse subshell, volto para onde estava?
$ mylongcommand -n -e <SOME KEY COMBINATION WHICH OPENS A SUBSHELL>
$ date
...
$ exit
$ mylongcommand -n -e <BACK TO WHERE I WAS>
estou a usar zsh
command-line
zsh
Panayiotis
fonte
fonte
screen
outmux
obter vários terminais virtuais no console.Respostas:
Existe a combinação de teclas EscQque salva o buffer de comando e permite inserir um novo comando. Depois de executar o comando, o buffer contém o que você digitou antes. Se você precisar executar outro comando antes de terminar, digite EscQnovamente.
(Eu não tentei abrir um subshell depois de pressionar EscQainda.)
Veja http://zsh.sourceforge.net/Intro/intro_10.html e procure por "esc-q"
fonte
Eu normalmente uso Ctrl+, Uque apaga a linha atual e a salva em um buffer. A partir daí, faço o que sempre precisei antes do
mylongcommand
. Quando estiver pronto, uso Ctrl+ Ypara colarmylongcommand
novamente no meu prompt.Lembre-se de um comando digitado pela metade enquanto eu verifico algo
fonte
Minha solução para isso é decididamente low-tech e desajeitado, mas depende de-chave seqüências você provavelmente já está familiarizado com: Hit Ctrl+ A, então #, então ENTER.
Isso tem o efeito de inserir um
#
no início da linha, tornando-o um comentário e, em seguida, executando-o, empurrando-o para o histórico de comandos. Em seguida, você pode inserir seu comando auxiliar e, em seguida, percorrer o histórico de comandos até o comando comentado, remover#
e concluir o comando conforme necessário.fonte
Digite Ctrl+ Zpara "suspender" o comando que estou digitando e digite outro comando. Depois de executar esse comando (ou abortá-lo com Ctrl+ C), o comando suspenso volta para edição (mesmo lembrando a posição do cursor). Como conveniência adicional, se a linha de comando estiver vazia quando eu digitar Ctrl+ Z, a tecla chamará o interno
bg
(portanto, um duplo Ctrl+ Zenvia um comando em execução diretamente para o plano de fundo).(Anteriormente afixado em Lembre-se um comando digitado-metade enquanto eu verificar algo que principalmente tem soluções para bash, onde você não pode fazer algo tão conveniente. Esta é uma versão ligeiramente mais extravagante do built-in de ligação de
M-q
parapush-line
.)Isso não executa um subshell: o comando que você digita após “suspender” o anterior é executado no mesmo shell. Isso permite fazer coisas como alterar o diretório atual, se você perceber, depois de digitar um comando, que pretendia executá-lo em um diretório diferente. Se você deseja executar uma nova instância do shell, pode executar a
zsh
partir de uma ligação de chave, mas não acho que seja particularmente útil.fonte