Posso remover a ligação da tecla ctrl-z no meu shell?

3

O pano de fundo para esta pergunta: Atualmente eu tenho que fazer muito do meu trabalho no terminal sobre o ssh, e eu uso bastante a tela. Porque achei a ligação de teclas ctrl-a para comandos de tela tão irritante, já que estou acostumado a usar ctrl-a para ir ao início de uma linha, mudei para ctrl-z. O único problema com isso é que, quando estou no Matlab, acho que estou na Tela, mas não estou, pressionar ctrl-z irá matar instantaneamente minha sessão do Matlab, porque ctrl-z é a chave para a suspensão de processos no * nix. / p>

Portanto, a questão é: posso remover a ligação de chave de ctrl-z em meu shell para que ele não suspenda mais um processo?

Meu shell é terminal.app no OSX.

    
por Nagel 18.09.2012 / 13:31

3 respostas

10

A ligação ^ Z não está configurada no shell, mas no seu TTY , o pseudo-dispositivo que permite falar com o terminal físico ou, como é típico hoje em dia, para um programa emulador de terminal. O TTY carrega configurações que dizem ao kernel como reagir à entrada do teclado relatada pelo dispositivo ou emulador.

As configurações são alteradas usando o comando stty :

stty susp "^P"

stty aceita um nome de configuração e seu valor; Nesse caso, o nome da configuração é susp para a chave que suspende o processo e o valor é uma combinação de teclas, como ^ P . Digite stty -a ou consulte man stty para uma lista de configurações disponíveis.

    
por 18.09.2012 / 14:20
2

Você pode envolver seu matlab em um script chamado matlab.sh da seguinte forma:

#!/bin/sh
trap "" TSTP
/path/to/matlab-executable

Isso irá ignorar o sinal TSTP normalmente enviado por Ctrl-Z.

    
por 18.09.2012 / 18:50
2

Outra possibilidade é escolher um caractere de escape diferente para a tela.

Eu uso o caractere nulo. Eu tenho o seguinte no meu $HOME/.screenrc :

escape ^@^@

O caractere nulo pode (geralmente) ser inserido como Ctrl-Space , o que é muito fácil de digitar. E, claro, se eu precisar enviar um caractere nulo real para um programa (por exemplo, ele está ligado a set-mark-command no Emacs), eu apenas digite Ctrl-Space duas vezes.

(Isso às vezes causa problemas quando estou usando um dispositivo ou emulador de terminal que não pode enviar o caractere nulo, mas isso é raro.)

Outra possibilidade é Ctrl -] :

escape ^]^]

que também é fácil de digitar em um teclado dos EUA. (Na verdade, uso isso em uma sessão de tela que é executada aninhada em minha sessão de tela principal, mas provavelmente é mais do que você deseja saber.) O único conflito com que normalmente me deparo é que é o caractere de escape padrão para o telnet comando.

    
por 18.09.2012 / 23:03