Comportamento CTRL C na hierarquia de shells

3
Em primeiro lugar, desculpe pelos erros de terminologia, eu tentaria ser claro.

Eu abro um shell (como sbt ou node debug do meu bash). Então dentro desse shell, eu abro outro (usando scala ou node repl respectivamente). Agora eu quero fechar o último shell e voltar para o primeiro que eu abri (por exemplo, o sbt ), mas quando eu uso CTRL + C , toda a hierarquia do shell está sendo fechado e eu volto para o terminal bash original.

Como aprendi com aqui , esse comportamento não é padrão e é indesejável para mim.

EDITAR: Estou enfrentando esse problema com node debug , então, na verdade, o problema não é sobre sbt e scala . Usei-os para realizar um experimento que mostra um comportamento geral fora do padrão do meu bash. Eu encontrei um problema semelhante com o windows aqui , mas eu uso o Ubuntu 14.04

    
por leonprou 24.05.2014 / 18:29

2 respostas

1

Digitar o comando exit ou quit sairá do console aninhado dentro de sbt . Você também pode abreviar esses comandos assim:

scala> :q
Not interrupting system thread Thread[process reaper,10,system]

[success] Total time: 138 s, completed May 25, 2014 1:33:22 PM
> 

Ou como :e . Esta informação é coberta na página de ajuda de console .

scala> :help
All commands can be abbreviated, e.g. :he instead of :help.
Those marked with a * have more detailed help, e.g. :help imports.

:cp <path>                 add a jar or directory to the classpath
:help [command]            print this summary or command-specific help
:history [num]             show the history (optional num is commands to show)
:h? <string>               search the history
:imports [name name ...]   show import history, identifying sources of names
:implicits [-v]            show the implicits in scope
:javap <path|class>        disassemble a file or class name
:load <path>               load and interpret a Scala file
:paste                     enter paste mode: all input up to ctrl-D compiled together
:power                     enable power user mode
:quit                      exit the interpreter
:replay                    reset execution and replay all previous commands
:reset                     reset the repl to its initial state, forgetting all session entries
:sh <command line>         run a shell command (result is implicitly => List[String])
:silent                    disable/enable automatic printing of results
:type [-v] <expr>          display the type of an expression without evaluating it
:warnings                  show the suppressed warnings from the most recent line which had any

scala> 

Atalhos de teclado no console?

O que você está procurando aqui é descobrir quais atalhos de teclado estão disponíveis para você via console . Para esse fim, este post parece indicar que há poucos para usar:

I found the key shourtcut in scala interpreter, only support ctl+a,ctl+e,and ctl+f,ctl+b, and even tab key not supprt , not to mention code autocompletion (like f#'s)

Fonte: Assunto: scala atalho de teclado do console de intérprete e autocompletar de código? - msg # 00309

Que tal REPL?

De acordo com este SO Q & A intitulado: Existe uma maneira de usar ctrl-d como forward delete no REPL do Scala? você pode fazer uso dos atalhos de teclado padrão no REPL do Scala 2.9 através do :keybindings .

Você também pode, aparentemente, substituir as combinações de teclas com as suas personalizadas, da seguinte forma:

$ scala -Djline.keybindings=/path/to/keybindings.properties

Veja o SO Q & A acima referido para mais detalhes.

    
por 25.05.2014 / 19:35
0

Se você digitar na linha de comando: kill -l , verá todas as diferentes interupções existentes. Nem todos são configuráveis pelo usuário.

stty definirá sua ação (interrupção) com as teclas ( Ctrl c , Ctrl \ , Ctrl z , etc)

stty intr ^C irá definir a tecla Ctrl c como você espera.

Outro recurso interessante é o trapping.

Se você usar: trap 'echo tried it' 2 , ele irá interceptar sua interrupção e substituí-la por echo tried it

Esta é uma boa maneira de proteger seu script de shell de abortar para a linha de comando.

    
por 25.05.2014 / 21:56