Shell de saída com atalho (sem digitar exit) que fecha a sessão corretamente

12

Eu uso um comando ProxyJump para várias sessões ssh que uso diariamente, e também alterno muito os usuários nessas sessões e ter que digitar exit3 ou 4 vezes seguidas não é muito divertido.

Estou ciente de newline+ ~+ .para encerrar uma sessão ssh, ainda tenho que verificar se ela termina amigavelmente como exitfaria, mas como você sai de todas as sessões no shell atual com um único comando ou atalho, como digitar exit3 ou 4 vezes no meu caso se torna uma coisa única?

tsujp
fonte
2
~.apenas desconecta seu cliente SSH (é útil quando a rede desapareceu, por exemplo). Normalmente, o daemon SSH reconhecerá isso e sinalizará sua sessão SIGHUP, portanto, não é o mesmo que sair do shell normalmente (mas é útil se você não conseguir obter nenhuma resposta do shell).
precisa

Respostas:

29

Ctrl- Dsairá de um shell em muitos casos. É mais rápido que digitar exit Enter. Ainda não é um único comando para terminar tudo, mas segurar Ctrle bater Dvárias vezes é mais fácil e rápido. Não tenho certeza do quanto isso é valioso para o seu caso de uso.

Discutido em detalhes aqui .

0xSheepdog
fonte
2
A próxima parada é unix.stackexchange.com/a/182071/5132 , e a parada seguinte é a leitura adicional. (-:
JdeBP 18/03/19
2
Tenha cuidado com CTRL + D. No bash, se você tiver inserido algum caractere em seu prompt, pressionar CTRL + D executará da mesma maneira que Enter faria. Em outras palavras, não digite um rmcomando e pressione CTRL + D se não quiser executá-lo. Não vejo esse comportamento no ksh.
Peschke
2
@Peschke Em todos os sistemas que já usei Ctrl + D não faz nada se eu digitar alguma coisa. Eu nunca vi o comportamento que você descreve.
John Kugelman
1
@JohnKugelman Testei e confirmei o comportamento no momento do meu comentário com o bash no RHEL 7.5.
Peschke
3
Peschke está usando as viligações de entrada do terminal.
JdeBP 19/03/19
5

Digitar ~.realmente faz o truque de fechar todas as conexões "aninhadas" até o mais profundo.

Faz isso com a saída amigável que você deseja, desde que todas as suas conchas estejam configuradas para lidar com o SIGHUP como uma morte graciosa. O Bash faz isso por padrão. Pode facilmente verificar a saída amigável para o seu set-up por exemplo, ver se os .bash_historyarquivos de suas sessões mais profundas obter devidamente atualizado após a ~., ou se você definir suas Bash-es não atualização .bash_history ao sair, então você pode definir um trapna Evento EXIT (ou no seu ~/.bash_logout) com um comando que grava algo em algum lugar e depois vê se foi executado.

Além disso, não sei o que você quer dizer com "sair de todas as sessões no shell atual". Cada bash interativo é apenas uma sessão, e os comandos que você digita vão sempre apenas para o shell mais profundo da cadeia ProxyJump. Se você quis dizer "os trabalhos em segundo plano no shell atual", o bash envia SIGHUP para todos os seus trabalhos ao receber o SIGHUP pelo daemon ssh ~., portanto, essa saída deve ser totalmente amigável se os trabalhos em execução reagirem adequadamente a um SIGHUP.

LL3
fonte